diff --git a/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go b/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
index b829906..a9c516b 100644
--- a/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
+++ b/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
@@ -322,7 +322,7 @@
 
 func (c *SitesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -464,7 +464,7 @@
 
 func (c *ViolatingSitesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
index dc5714c..78954d4 100644
--- a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
+++ b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
@@ -358,7 +358,7 @@
 
 func (c *AmpUrlsBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/accessapproval/v1beta1/accessapproval-gen.go b/accessapproval/v1beta1/accessapproval-gen.go
index 387d4cf..14fe59a 100644
--- a/accessapproval/v1beta1/accessapproval-gen.go
+++ b/accessapproval/v1beta1/accessapproval-gen.go
@@ -770,7 +770,7 @@
 
 func (c *FoldersDeleteAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -912,7 +912,7 @@
 
 func (c *FoldersGetAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1062,7 +1062,7 @@
 
 func (c *FoldersUpdateAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1214,7 +1214,7 @@
 
 func (c *FoldersApprovalRequestsApproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1367,7 +1367,7 @@
 
 func (c *FoldersApprovalRequestsDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1517,7 +1517,7 @@
 
 func (c *FoldersApprovalRequestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1695,7 +1695,7 @@
 
 func (c *FoldersApprovalRequestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1875,7 +1875,7 @@
 
 func (c *OrganizationsDeleteAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2017,7 +2017,7 @@
 
 func (c *OrganizationsGetAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2167,7 +2167,7 @@
 
 func (c *OrganizationsUpdateAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2319,7 +2319,7 @@
 
 func (c *OrganizationsApprovalRequestsApproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2472,7 +2472,7 @@
 
 func (c *OrganizationsApprovalRequestsDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2622,7 +2622,7 @@
 
 func (c *OrganizationsApprovalRequestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2800,7 +2800,7 @@
 
 func (c *OrganizationsApprovalRequestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2980,7 +2980,7 @@
 
 func (c *ProjectsDeleteAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3122,7 +3122,7 @@
 
 func (c *ProjectsGetAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3272,7 +3272,7 @@
 
 func (c *ProjectsUpdateAccessApprovalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3424,7 +3424,7 @@
 
 func (c *ProjectsApprovalRequestsApproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3577,7 +3577,7 @@
 
 func (c *ProjectsApprovalRequestsDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3727,7 +3727,7 @@
 
 func (c *ProjectsApprovalRequestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3905,7 +3905,7 @@
 
 func (c *ProjectsApprovalRequestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/accesscontextmanager/v1/accesscontextmanager-gen.go b/accesscontextmanager/v1/accesscontextmanager-gen.go
index 0d86ee7..da2e8a8 100644
--- a/accesscontextmanager/v1/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1/accesscontextmanager-gen.go
@@ -1067,7 +1067,7 @@
 
 func (c *AccessPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1196,7 +1196,7 @@
 
 func (c *AccessPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1337,7 +1337,7 @@
 
 func (c *AccessPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1507,7 +1507,7 @@
 
 func (c *AccessPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1680,7 +1680,7 @@
 
 func (c *AccessPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1832,7 +1832,7 @@
 
 func (c *AccessPoliciesAccessLevelsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1974,7 +1974,7 @@
 
 func (c *AccessPoliciesAccessLevelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2139,7 +2139,7 @@
 
 func (c *AccessPoliciesAccessLevelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2326,7 +2326,7 @@
 
 func (c *AccessPoliciesAccessLevelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2516,7 +2516,7 @@
 
 func (c *AccessPoliciesAccessLevelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2669,7 +2669,7 @@
 
 func (c *AccessPoliciesServicePerimetersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2811,7 +2811,7 @@
 
 func (c *AccessPoliciesServicePerimetersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2953,7 +2953,7 @@
 
 func (c *AccessPoliciesServicePerimetersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3114,7 +3114,7 @@
 
 func (c *AccessPoliciesServicePerimetersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3295,7 +3295,7 @@
 
 func (c *AccessPoliciesServicePerimetersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3458,7 +3458,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3602,7 +3602,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3747,7 +3747,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3928,7 +3928,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-gen.go b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
index 2b55929..2506a89 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
@@ -1058,7 +1058,7 @@
 
 func (c *AccessPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1187,7 +1187,7 @@
 
 func (c *AccessPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1328,7 +1328,7 @@
 
 func (c *AccessPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1498,7 +1498,7 @@
 
 func (c *AccessPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1671,7 +1671,7 @@
 
 func (c *AccessPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1823,7 +1823,7 @@
 
 func (c *AccessPoliciesAccessLevelsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1965,7 +1965,7 @@
 
 func (c *AccessPoliciesAccessLevelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2130,7 +2130,7 @@
 
 func (c *AccessPoliciesAccessLevelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2317,7 +2317,7 @@
 
 func (c *AccessPoliciesAccessLevelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2507,7 +2507,7 @@
 
 func (c *AccessPoliciesAccessLevelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2660,7 +2660,7 @@
 
 func (c *AccessPoliciesServicePerimetersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2802,7 +2802,7 @@
 
 func (c *AccessPoliciesServicePerimetersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2944,7 +2944,7 @@
 
 func (c *AccessPoliciesServicePerimetersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3105,7 +3105,7 @@
 
 func (c *AccessPoliciesServicePerimetersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3286,7 +3286,7 @@
 
 func (c *AccessPoliciesServicePerimetersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3445,7 +3445,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adexchangebuyer/v1.2/adexchangebuyer-gen.go b/adexchangebuyer/v1.2/adexchangebuyer-gen.go
index 98f805c..e79b70b 100644
--- a/adexchangebuyer/v1.2/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.2/adexchangebuyer-gen.go
@@ -634,7 +634,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -775,7 +775,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -895,7 +895,7 @@
 
 func (c *AccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1034,7 +1034,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1185,7 +1185,7 @@
 
 func (c *CreativesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1325,7 +1325,7 @@
 
 func (c *CreativesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1486,7 +1486,7 @@
 
 func (c *CreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adexchangebuyer/v1.3/adexchangebuyer-gen.go b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
index a0548dd..1bb92c3 100644
--- a/adexchangebuyer/v1.3/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
@@ -1616,7 +1616,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1757,7 +1757,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1877,7 +1877,7 @@
 
 func (c *AccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2016,7 +2016,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2165,7 +2165,7 @@
 
 func (c *BillingInfoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2307,7 +2307,7 @@
 
 func (c *BillingInfoListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2438,7 +2438,7 @@
 
 func (c *BudgetGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2585,7 +2585,7 @@
 
 func (c *BudgetPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2737,7 +2737,7 @@
 
 func (c *BudgetUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2897,7 +2897,7 @@
 
 func (c *CreativesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3037,7 +3037,7 @@
 
 func (c *CreativesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3217,7 +3217,7 @@
 
 func (c *CreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3409,7 +3409,7 @@
 
 func (c *DirectDealsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3550,7 +3550,7 @@
 
 func (c *DirectDealsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3696,7 +3696,7 @@
 
 func (c *PerformanceReportListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3854,7 +3854,7 @@
 
 func (c *PretargetingConfigDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3977,7 +3977,7 @@
 
 func (c *PretargetingConfigGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4120,7 +4120,7 @@
 
 func (c *PretargetingConfigInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4269,7 +4269,7 @@
 
 func (c *PretargetingConfigListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4406,7 +4406,7 @@
 
 func (c *PretargetingConfigPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4556,7 +4556,7 @@
 
 func (c *PretargetingConfigUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-gen.go b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
index 268ffac..3e76450 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
@@ -4012,7 +4012,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4153,7 +4153,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4281,7 +4281,7 @@
 
 func (c *AccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4433,7 +4433,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4587,7 +4587,7 @@
 
 func (c *BillingInfoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4729,7 +4729,7 @@
 
 func (c *BillingInfoListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4860,7 +4860,7 @@
 
 func (c *BudgetGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5007,7 +5007,7 @@
 
 func (c *BudgetPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5159,7 +5159,7 @@
 
 func (c *BudgetUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5309,7 +5309,7 @@
 
 func (c *CreativesAddDealCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5441,7 +5441,7 @@
 
 func (c *CreativesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5581,7 +5581,7 @@
 
 func (c *CreativesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5784,7 +5784,7 @@
 
 func (c *CreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5997,7 +5997,7 @@
 
 func (c *CreativesListDealsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6141,7 +6141,7 @@
 
 func (c *CreativesRemoveDealCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6261,7 +6261,7 @@
 
 func (c *MarketplacedealsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6399,7 +6399,7 @@
 
 func (c *MarketplacedealsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6553,7 +6553,7 @@
 
 func (c *MarketplacedealsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6692,7 +6692,7 @@
 
 func (c *MarketplacedealsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6830,7 +6830,7 @@
 
 func (c *MarketplacenotesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6986,7 +6986,7 @@
 
 func (c *MarketplacenotesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7124,7 +7124,7 @@
 
 func (c *MarketplaceprivateauctionUpdateproposalCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7261,7 +7261,7 @@
 
 func (c *PerformanceReportListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7419,7 +7419,7 @@
 
 func (c *PretargetingConfigDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7542,7 +7542,7 @@
 
 func (c *PretargetingConfigGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7685,7 +7685,7 @@
 
 func (c *PretargetingConfigInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7834,7 +7834,7 @@
 
 func (c *PretargetingConfigListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7971,7 +7971,7 @@
 
 func (c *PretargetingConfigPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8121,7 +8121,7 @@
 
 func (c *PretargetingConfigUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8278,7 +8278,7 @@
 
 func (c *ProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8425,7 +8425,7 @@
 
 func (c *ProductsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8560,7 +8560,7 @@
 
 func (c *ProposalsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8691,7 +8691,7 @@
 
 func (c *ProposalsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8820,7 +8820,7 @@
 
 func (c *ProposalsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9005,7 +9005,7 @@
 
 func (c *ProposalsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9130,7 +9130,7 @@
 
 func (c *ProposalsSetupcompleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9236,7 +9236,7 @@
 
 func (c *ProposalsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9416,7 +9416,7 @@
 
 func (c *PubprofilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
index 8e9ec66..f540df2 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
@@ -6001,7 +6001,7 @@
 
 func (c *AccountsClientsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6152,7 +6152,7 @@
 
 func (c *AccountsClientsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6336,7 +6336,7 @@
 
 func (c *AccountsClientsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6510,7 +6510,7 @@
 
 func (c *AccountsClientsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6662,7 +6662,7 @@
 
 func (c *AccountsClientsInvitationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6824,7 +6824,7 @@
 
 func (c *AccountsClientsInvitationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7011,7 +7011,7 @@
 
 func (c *AccountsClientsInvitationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7200,7 +7200,7 @@
 
 func (c *AccountsClientsUsersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7387,7 +7387,7 @@
 
 func (c *AccountsClientsUsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7567,7 +7567,7 @@
 
 func (c *AccountsClientsUsersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7738,7 +7738,7 @@
 
 func (c *AccountsCreativesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7897,7 +7897,7 @@
 
 func (c *AccountsCreativesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8098,7 +8098,7 @@
 
 func (c *AccountsCreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8273,7 +8273,7 @@
 
 func (c *AccountsCreativesStopWatchingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8422,7 +8422,7 @@
 
 func (c *AccountsCreativesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8573,7 +8573,7 @@
 
 func (c *AccountsCreativesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8722,7 +8722,7 @@
 
 func (c *AccountsCreativesDealAssociationsAddCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8922,7 +8922,7 @@
 
 func (c *AccountsCreativesDealAssociationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9103,7 +9103,7 @@
 
 func (c *AccountsCreativesDealAssociationsRemoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9302,7 +9302,7 @@
 
 func (c *AccountsFinalizedProposalsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9494,7 +9494,7 @@
 
 func (c *AccountsProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9676,7 +9676,7 @@
 
 func (c *AccountsProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9855,7 +9855,7 @@
 
 func (c *AccountsProposalsAcceptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10009,7 +10009,7 @@
 
 func (c *AccountsProposalsAddNoteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10162,7 +10162,7 @@
 
 func (c *AccountsProposalsCancelNegotiationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10322,7 +10322,7 @@
 
 func (c *AccountsProposalsCompleteSetupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10471,7 +10471,7 @@
 
 func (c *AccountsProposalsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10623,7 +10623,7 @@
 
 func (c *AccountsProposalsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10823,7 +10823,7 @@
 
 func (c *AccountsProposalsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11016,7 +11016,7 @@
 
 func (c *AccountsProposalsPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11179,7 +11179,7 @@
 
 func (c *AccountsProposalsResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11349,7 +11349,7 @@
 
 func (c *AccountsProposalsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11507,7 +11507,7 @@
 
 func (c *AccountsPublisherProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11672,7 +11672,7 @@
 
 func (c *AccountsPublisherProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11849,7 +11849,7 @@
 
 func (c *BiddersAccountsFilterSetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11994,7 +11994,7 @@
 
 func (c *BiddersAccountsFilterSetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12137,7 +12137,7 @@
 
 func (c *BiddersAccountsFilterSetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12304,7 +12304,7 @@
 
 func (c *BiddersAccountsFilterSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12500,7 +12500,7 @@
 
 func (c *BiddersAccountsFilterSetsBidMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12698,7 +12698,7 @@
 
 func (c *BiddersAccountsFilterSetsBidResponseErrorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12898,7 +12898,7 @@
 
 func (c *BiddersAccountsFilterSetsBidResponsesWithoutBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13098,7 +13098,7 @@
 
 func (c *BiddersAccountsFilterSetsFilteredBidRequestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13296,7 +13296,7 @@
 
 func (c *BiddersAccountsFilterSetsFilteredBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13497,7 +13497,7 @@
 
 func (c *BiddersAccountsFilterSetsFilteredBidsCreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13709,7 +13709,7 @@
 
 func (c *BiddersAccountsFilterSetsFilteredBidsDetailsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13917,7 +13917,7 @@
 
 func (c *BiddersAccountsFilterSetsImpressionMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14115,7 +14115,7 @@
 
 func (c *BiddersAccountsFilterSetsLosingBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14314,7 +14314,7 @@
 
 func (c *BiddersAccountsFilterSetsNonBillableWinningBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14493,7 +14493,7 @@
 
 func (c *BiddersFilterSetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14638,7 +14638,7 @@
 
 func (c *BiddersFilterSetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14781,7 +14781,7 @@
 
 func (c *BiddersFilterSetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14948,7 +14948,7 @@
 
 func (c *BiddersFilterSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15144,7 +15144,7 @@
 
 func (c *BiddersFilterSetsBidMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15342,7 +15342,7 @@
 
 func (c *BiddersFilterSetsBidResponseErrorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15542,7 +15542,7 @@
 
 func (c *BiddersFilterSetsBidResponsesWithoutBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15742,7 +15742,7 @@
 
 func (c *BiddersFilterSetsFilteredBidRequestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15940,7 +15940,7 @@
 
 func (c *BiddersFilterSetsFilteredBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16141,7 +16141,7 @@
 
 func (c *BiddersFilterSetsFilteredBidsCreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16353,7 +16353,7 @@
 
 func (c *BiddersFilterSetsFilteredBidsDetailsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16561,7 +16561,7 @@
 
 func (c *BiddersFilterSetsImpressionMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16759,7 +16759,7 @@
 
 func (c *BiddersFilterSetsLosingBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16958,7 +16958,7 @@
 
 func (c *BiddersFilterSetsNonBillableWinningBidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adexperiencereport/v1/adexperiencereport-gen.go b/adexperiencereport/v1/adexperiencereport-gen.go
index 677cbc7..72b1e8b 100644
--- a/adexperiencereport/v1/adexperiencereport-gen.go
+++ b/adexperiencereport/v1/adexperiencereport-gen.go
@@ -374,7 +374,7 @@
 
 func (c *SitesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -518,7 +518,7 @@
 
 func (c *ViolatingSitesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/admin/datatransfer/v1/admin-gen.go b/admin/datatransfer/v1/admin-gen.go
index 0bd7fb9..6d92b00 100644
--- a/admin/datatransfer/v1/admin-gen.go
+++ b/admin/datatransfer/v1/admin-gen.go
@@ -479,7 +479,7 @@
 
 func (c *ApplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -643,7 +643,7 @@
 
 func (c *ApplicationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -813,7 +813,7 @@
 
 func (c *TransfersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -945,7 +945,7 @@
 
 func (c *TransfersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1118,7 +1118,7 @@
 
 func (c *TransfersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/admin/directory/v1/admin-gen.go b/admin/directory/v1/admin-gen.go
index a1e4429..0226f44 100644
--- a/admin/directory/v1/admin-gen.go
+++ b/admin/directory/v1/admin-gen.go
@@ -4734,7 +4734,7 @@
 
 func (c *AspsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4856,7 +4856,7 @@
 
 func (c *AspsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5007,7 +5007,7 @@
 
 func (c *AspsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5138,7 +5138,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5241,7 +5241,7 @@
 
 func (c *ChromeosdevicesActionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5382,7 +5382,7 @@
 
 func (c *ChromeosdevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5616,7 +5616,7 @@
 
 func (c *ChromeosdevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5845,7 +5845,7 @@
 
 func (c *ChromeosdevicesMoveDevicesToOuCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5976,7 +5976,7 @@
 
 func (c *ChromeosdevicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6149,7 +6149,7 @@
 
 func (c *ChromeosdevicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6317,7 +6317,7 @@
 
 func (c *CustomersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6451,7 +6451,7 @@
 
 func (c *CustomersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6589,7 +6589,7 @@
 
 func (c *CustomersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6727,7 +6727,7 @@
 
 func (c *DomainAliasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6848,7 +6848,7 @@
 
 func (c *DomainAliasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6990,7 +6990,7 @@
 
 func (c *DomainAliasesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7144,7 +7144,7 @@
 
 func (c *DomainAliasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7283,7 +7283,7 @@
 
 func (c *DomainsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7404,7 +7404,7 @@
 
 func (c *DomainsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7546,7 +7546,7 @@
 
 func (c *DomainsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7693,7 +7693,7 @@
 
 func (c *DomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7825,7 +7825,7 @@
 
 func (c *GroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7936,7 +7936,7 @@
 
 func (c *GroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8068,7 +8068,7 @@
 
 func (c *GroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8269,7 +8269,7 @@
 
 func (c *GroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8469,7 +8469,7 @@
 
 func (c *GroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8607,7 +8607,7 @@
 
 func (c *GroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8745,7 +8745,7 @@
 
 func (c *GroupsAliasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8855,7 +8855,7 @@
 
 func (c *GroupsAliasesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9002,7 +9002,7 @@
 
 func (c *GroupsAliasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9137,7 +9137,7 @@
 
 func (c *MembersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9259,7 +9259,7 @@
 
 func (c *MembersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9415,7 +9415,7 @@
 
 func (c *MembersHasMemberCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9559,7 +9559,7 @@
 
 func (c *MembersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9736,7 +9736,7 @@
 
 func (c *MembersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9919,7 +9919,7 @@
 
 func (c *MembersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10068,7 +10068,7 @@
 
 func (c *MembersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10217,7 +10217,7 @@
 
 func (c *MobiledevicesActionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10336,7 +10336,7 @@
 
 func (c *MobiledevicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10469,7 +10469,7 @@
 
 func (c *MobiledevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10697,7 +10697,7 @@
 
 func (c *MobiledevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10922,7 +10922,7 @@
 
 func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11043,7 +11043,7 @@
 
 func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11215,7 +11215,7 @@
 
 func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11387,7 +11387,7 @@
 
 func (c *NotificationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11535,7 +11535,7 @@
 
 func (c *NotificationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11681,7 +11681,7 @@
 
 func (c *OrgunitsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11803,7 +11803,7 @@
 
 func (c *OrgunitsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11946,7 +11946,7 @@
 
 func (c *OrgunitsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12111,7 +12111,7 @@
 
 func (c *OrgunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12267,7 +12267,7 @@
 
 func (c *OrgunitsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12416,7 +12416,7 @@
 
 func (c *OrgunitsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12572,7 +12572,7 @@
 
 func (c *PrivilegesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12714,7 +12714,7 @@
 
 func (c *ResolvedAppAccessSettingsGetSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12838,7 +12838,7 @@
 
 func (c *ResolvedAppAccessSettingsListTrustedAppsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12954,7 +12954,7 @@
 
 func (c *ResourcesBuildingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13075,7 +13075,7 @@
 
 func (c *ResourcesBuildingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13233,7 +13233,7 @@
 
 func (c *ResourcesBuildingsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13410,7 +13410,7 @@
 
 func (c *ResourcesBuildingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13596,7 +13596,7 @@
 
 func (c *ResourcesBuildingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13776,7 +13776,7 @@
 
 func (c *ResourcesBuildingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13938,7 +13938,7 @@
 
 func (c *ResourcesCalendarsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14059,7 +14059,7 @@
 
 func (c *ResourcesCalendarsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14201,7 +14201,7 @@
 
 func (c *ResourcesCalendarsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14388,7 +14388,7 @@
 
 func (c *ResourcesCalendarsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14572,7 +14572,7 @@
 
 func (c *ResourcesCalendarsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14724,7 +14724,7 @@
 
 func (c *ResourcesCalendarsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14870,7 +14870,7 @@
 
 func (c *ResourcesFeaturesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14991,7 +14991,7 @@
 
 func (c *ResourcesFeaturesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15133,7 +15133,7 @@
 
 func (c *ResourcesFeaturesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15294,7 +15294,7 @@
 
 func (c *ResourcesFeaturesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15464,7 +15464,7 @@
 
 func (c *ResourcesFeaturesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15612,7 +15612,7 @@
 
 func (c *ResourcesFeaturesRenameCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15732,7 +15732,7 @@
 
 func (c *ResourcesFeaturesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15878,7 +15878,7 @@
 
 func (c *RoleAssignmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15999,7 +15999,7 @@
 
 func (c *RoleAssignmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16141,7 +16141,7 @@
 
 func (c *RoleAssignmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16318,7 +16318,7 @@
 
 func (c *RoleAssignmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16496,7 +16496,7 @@
 
 func (c *RolesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16617,7 +16617,7 @@
 
 func (c *RolesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16759,7 +16759,7 @@
 
 func (c *RolesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16920,7 +16920,7 @@
 
 func (c *RolesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17090,7 +17090,7 @@
 
 func (c *RolesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17238,7 +17238,7 @@
 
 func (c *RolesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17384,7 +17384,7 @@
 
 func (c *SchemasDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17505,7 +17505,7 @@
 
 func (c *SchemasGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17647,7 +17647,7 @@
 
 func (c *SchemasInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17794,7 +17794,7 @@
 
 func (c *SchemasListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17930,7 +17930,7 @@
 
 func (c *SchemasPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18078,7 +18078,7 @@
 
 func (c *SchemasUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18224,7 +18224,7 @@
 
 func (c *TokensDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18345,7 +18345,7 @@
 
 func (c *TokensGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18496,7 +18496,7 @@
 
 func (c *TokensListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18627,7 +18627,7 @@
 
 func (c *UsersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18770,7 +18770,7 @@
 
 func (c *UsersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18937,7 +18937,7 @@
 
 func (c *UsersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19183,7 +19183,7 @@
 
 func (c *UsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19444,7 +19444,7 @@
 
 func (c *UsersMakeAdminCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19554,7 +19554,7 @@
 
 func (c *UsersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19692,7 +19692,7 @@
 
 func (c *UsersUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19802,7 +19802,7 @@
 
 func (c *UsersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20052,7 +20052,7 @@
 
 func (c *UsersWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20298,7 +20298,7 @@
 
 func (c *UsersAliasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20409,7 +20409,7 @@
 
 func (c *UsersAliasesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20568,7 +20568,7 @@
 
 func (c *UsersAliasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20729,7 +20729,7 @@
 
 func (c *UsersAliasesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20883,7 +20883,7 @@
 
 func (c *UsersPhotosDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20994,7 +20994,7 @@
 
 func (c *UsersPhotosGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21129,7 +21129,7 @@
 
 func (c *UsersPhotosPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21267,7 +21267,7 @@
 
 func (c *UsersPhotosUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21403,7 +21403,7 @@
 
 func (c *VerificationCodesGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21504,7 +21504,7 @@
 
 func (c *VerificationCodesInvalidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21616,7 +21616,7 @@
 
 func (c *VerificationCodesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/admin/reports/v1/admin-gen.go b/admin/reports/v1/admin-gen.go
index f72e8fd..b4e8584 100644
--- a/admin/reports/v1/admin-gen.go
+++ b/admin/reports/v1/admin-gen.go
@@ -1106,7 +1106,7 @@
 
 func (c *ActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1515,7 +1515,7 @@
 
 func (c *ActivitiesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1755,7 +1755,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1906,7 +1906,7 @@
 
 func (c *CustomerUsageReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2172,7 +2172,7 @@
 
 func (c *EntityUsageReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2493,7 +2493,7 @@
 
 func (c *UserUsageReportGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adsense/v1.4/adsense-gen.go b/adsense/v1.4/adsense-gen.go
index 0d4f285..e1f849e 100644
--- a/adsense/v1.4/adsense-gen.go
+++ b/adsense/v1.4/adsense-gen.go
@@ -1822,7 +1822,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1984,7 +1984,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2151,7 +2151,7 @@
 
 func (c *AccountsAdclientsGetAdCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2318,7 +2318,7 @@
 
 func (c *AccountsAdclientsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2500,7 +2500,7 @@
 
 func (c *AccountsAdunitsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2663,7 +2663,7 @@
 
 func (c *AccountsAdunitsGetAdCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2848,7 +2848,7 @@
 
 func (c *AccountsAdunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3060,7 +3060,7 @@
 
 func (c *AccountsAdunitsCustomchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3245,7 +3245,7 @@
 
 func (c *AccountsAlertsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3373,7 +3373,7 @@
 
 func (c *AccountsAlertsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3526,7 +3526,7 @@
 
 func (c *AccountsCustomchannelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3705,7 +3705,7 @@
 
 func (c *AccountsCustomchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3917,7 +3917,7 @@
 
 func (c *AccountsCustomchannelsAdunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4115,7 +4115,7 @@
 
 func (c *AccountsPaymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4331,7 +4331,7 @@
 
 func (c *AccountsReportsGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4593,7 +4593,7 @@
 
 func (c *AccountsReportsSavedGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4782,7 +4782,7 @@
 
 func (c *AccountsReportsSavedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4961,7 +4961,7 @@
 
 func (c *AccountsSavedadstylesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5129,7 +5129,7 @@
 
 func (c *AccountsSavedadstylesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5325,7 +5325,7 @@
 
 func (c *AccountsUrlchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5524,7 +5524,7 @@
 
 func (c *AdclientsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5691,7 +5691,7 @@
 
 func (c *AdunitsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5844,7 +5844,7 @@
 
 func (c *AdunitsGetAdCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6019,7 +6019,7 @@
 
 func (c *AdunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6221,7 +6221,7 @@
 
 func (c *AdunitsCustomchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6396,7 +6396,7 @@
 
 func (c *AlertsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6514,7 +6514,7 @@
 
 func (c *AlertsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6652,7 +6652,7 @@
 
 func (c *CustomchannelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6821,7 +6821,7 @@
 
 func (c *CustomchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7023,7 +7023,7 @@
 
 func (c *CustomchannelsAdunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7212,7 +7212,7 @@
 
 func (c *MetadataDimensionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7340,7 +7340,7 @@
 
 func (c *MetadataMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7467,7 +7467,7 @@
 
 func (c *PaymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7674,7 +7674,7 @@
 
 func (c *ReportsGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7930,7 +7930,7 @@
 
 func (c *ReportsSavedGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8109,7 +8109,7 @@
 
 func (c *ReportsSavedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8274,7 +8274,7 @@
 
 func (c *SavedadstylesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8432,7 +8432,7 @@
 
 func (c *SavedadstylesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8614,7 +8614,7 @@
 
 func (c *UrlchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/adsensehost/v4.1/adsensehost-gen.go b/adsensehost/v4.1/adsensehost-gen.go
index 99059d8..305c019 100644
--- a/adsensehost/v4.1/adsensehost-gen.go
+++ b/adsensehost/v4.1/adsensehost-gen.go
@@ -1150,7 +1150,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1292,7 +1292,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1435,7 +1435,7 @@
 
 func (c *AccountsAdclientsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1601,7 +1601,7 @@
 
 func (c *AccountsAdclientsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1771,7 +1771,7 @@
 
 func (c *AccountsAdunitsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1930,7 +1930,7 @@
 
 func (c *AccountsAdunitsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2100,7 +2100,7 @@
 
 func (c *AccountsAdunitsGetAdCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2258,7 +2258,7 @@
 
 func (c *AccountsAdunitsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2438,7 +2438,7 @@
 
 func (c *AccountsAdunitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2622,7 +2622,7 @@
 
 func (c *AccountsAdunitsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2778,7 +2778,7 @@
 
 func (c *AccountsAdunitsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2989,7 +2989,7 @@
 
 func (c *AccountsReportsGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3198,7 +3198,7 @@
 
 func (c *AdclientsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3354,7 +3354,7 @@
 
 func (c *AdclientsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3533,7 +3533,7 @@
 
 func (c *AssociationsessionsStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3704,7 +3704,7 @@
 
 func (c *AssociationsessionsVerifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3835,7 +3835,7 @@
 
 func (c *CustomchannelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3984,7 +3984,7 @@
 
 func (c *CustomchannelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4125,7 +4125,7 @@
 
 func (c *CustomchannelsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4289,7 +4289,7 @@
 
 func (c *CustomchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4458,7 +4458,7 @@
 
 func (c *CustomchannelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4603,7 +4603,7 @@
 
 func (c *CustomchannelsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4804,7 +4804,7 @@
 
 func (c *ReportsGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4993,7 +4993,7 @@
 
 func (c *UrlchannelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5131,7 +5131,7 @@
 
 func (c *UrlchannelsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5294,7 +5294,7 @@
 
 func (c *UrlchannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/alertcenter/v1beta1/alertcenter-gen.go b/alertcenter/v1beta1/alertcenter-gen.go
index 6483746..a3e6e90 100644
--- a/alertcenter/v1beta1/alertcenter-gen.go
+++ b/alertcenter/v1beta1/alertcenter-gen.go
@@ -1722,7 +1722,7 @@
 
 func (c *AlertsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1847,7 +1847,7 @@
 
 func (c *AlertsBatchUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1988,7 +1988,7 @@
 
 func (c *AlertsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2144,7 +2144,7 @@
 
 func (c *AlertsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2303,7 +2303,7 @@
 
 func (c *AlertsGetMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2506,7 +2506,7 @@
 
 func (c *AlertsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2685,7 +2685,7 @@
 
 func (c *AlertsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2839,7 +2839,7 @@
 
 func (c *AlertsFeedbackCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3018,7 +3018,7 @@
 
 func (c *AlertsFeedbackListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3178,7 +3178,7 @@
 
 func (c *V1beta1GetSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3313,7 +3313,7 @@
 
 func (c *V1beta1UpdateSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/analytics/v2.4/analytics-gen.go b/analytics/v2.4/analytics-gen.go
index cc39e7b..8e7ec49 100644
--- a/analytics/v2.4/analytics-gen.go
+++ b/analytics/v2.4/analytics-gen.go
@@ -321,7 +321,7 @@
 
 func (c *DataGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -507,7 +507,7 @@
 
 func (c *ManagementAccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -642,7 +642,7 @@
 
 func (c *ManagementGoalsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -803,7 +803,7 @@
 
 func (c *ManagementProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -952,7 +952,7 @@
 
 func (c *ManagementSegmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1083,7 +1083,7 @@
 
 func (c *ManagementWebpropertiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/analytics/v3/analytics-gen.go b/analytics/v3/analytics-gen.go
index ba0880e..3b25115 100644
--- a/analytics/v3/analytics-gen.go
+++ b/analytics/v3/analytics-gen.go
@@ -6027,7 +6027,7 @@
 
 func (c *DataGaGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6316,7 +6316,7 @@
 
 func (c *DataMcfGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6557,7 +6557,7 @@
 
 func (c *DataRealtimeGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6745,7 +6745,7 @@
 
 func (c *ManagementAccountSummariesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6880,7 +6880,7 @@
 
 func (c *ManagementAccountUserLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6990,7 +6990,7 @@
 
 func (c *ManagementAccountUserLinksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7152,7 +7152,7 @@
 
 func (c *ManagementAccountUserLinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7302,7 +7302,7 @@
 
 func (c *ManagementAccountUserLinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7470,7 +7470,7 @@
 
 func (c *ManagementAccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7604,7 +7604,7 @@
 
 func (c *ManagementClientIdHashClientIdCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7755,7 +7755,7 @@
 
 func (c *ManagementCustomDataSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7927,7 +7927,7 @@
 
 func (c *ManagementCustomDimensionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8079,7 +8079,7 @@
 
 func (c *ManagementCustomDimensionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8251,7 +8251,7 @@
 
 func (c *ManagementCustomDimensionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8420,7 +8420,7 @@
 
 func (c *ManagementCustomDimensionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8593,7 +8593,7 @@
 
 func (c *ManagementCustomDimensionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8766,7 +8766,7 @@
 
 func (c *ManagementCustomMetricsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8918,7 +8918,7 @@
 
 func (c *ManagementCustomMetricsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9090,7 +9090,7 @@
 
 func (c *ManagementCustomMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9259,7 +9259,7 @@
 
 func (c *ManagementCustomMetricsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9432,7 +9432,7 @@
 
 func (c *ManagementCustomMetricsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9596,7 +9596,7 @@
 
 func (c *ManagementExperimentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9738,7 +9738,7 @@
 
 func (c *ManagementExperimentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9901,7 +9901,7 @@
 
 func (c *ManagementExperimentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10084,7 +10084,7 @@
 
 func (c *ManagementExperimentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10258,7 +10258,7 @@
 
 func (c *ManagementExperimentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10427,7 +10427,7 @@
 
 func (c *ManagementExperimentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10590,7 +10590,7 @@
 
 func (c *ManagementFiltersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10739,7 +10739,7 @@
 
 func (c *ManagementFiltersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10881,7 +10881,7 @@
 
 func (c *ManagementFiltersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11043,7 +11043,7 @@
 
 func (c *ManagementFiltersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11194,7 +11194,7 @@
 
 func (c *ManagementFiltersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11342,7 +11342,7 @@
 
 func (c *ManagementFiltersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11503,7 +11503,7 @@
 
 func (c *ManagementGoalsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11665,7 +11665,7 @@
 
 func (c *ManagementGoalsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11847,7 +11847,7 @@
 
 func (c *ManagementGoalsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12018,7 +12018,7 @@
 
 func (c *ManagementGoalsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12186,7 +12186,7 @@
 
 func (c *ManagementGoalsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12352,7 +12352,7 @@
 
 func (c *ManagementProfileFilterLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12497,7 +12497,7 @@
 
 func (c *ManagementProfileFilterLinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12663,7 +12663,7 @@
 
 func (c *ManagementProfileFilterLinksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12848,7 +12848,7 @@
 
 func (c *ManagementProfileFilterLinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13019,7 +13019,7 @@
 
 func (c *ManagementProfileFilterLinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13191,7 +13191,7 @@
 
 func (c *ManagementProfileFilterLinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13361,7 +13361,7 @@
 
 func (c *ManagementProfileUserLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13491,7 +13491,7 @@
 
 func (c *ManagementProfileUserLinksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13673,7 +13673,7 @@
 
 func (c *ManagementProfileUserLinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13843,7 +13843,7 @@
 
 func (c *ManagementProfileUserLinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14007,7 +14007,7 @@
 
 func (c *ManagementProfilesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14138,7 +14138,7 @@
 
 func (c *ManagementProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14293,7 +14293,7 @@
 
 func (c *ManagementProfilesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14465,7 +14465,7 @@
 
 func (c *ManagementProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14626,7 +14626,7 @@
 
 func (c *ManagementProfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14784,7 +14784,7 @@
 
 func (c *ManagementProfilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14940,7 +14940,7 @@
 
 func (c *ManagementRemarketingAudienceDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15071,7 +15071,7 @@
 
 func (c *ManagementRemarketingAudienceGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15223,7 +15223,7 @@
 
 func (c *ManagementRemarketingAudienceInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15401,7 +15401,7 @@
 
 func (c *ManagementRemarketingAudienceListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15566,7 +15566,7 @@
 
 func (c *ManagementRemarketingAudiencePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15724,7 +15724,7 @@
 
 func (c *ManagementRemarketingAudienceUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15900,7 +15900,7 @@
 
 func (c *ManagementSegmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16040,7 +16040,7 @@
 
 func (c *ManagementUnsampledReportsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16181,7 +16181,7 @@
 
 func (c *ManagementUnsampledReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16344,7 +16344,7 @@
 
 func (c *ManagementUnsampledReportsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16527,7 +16527,7 @@
 
 func (c *ManagementUnsampledReportsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16695,7 +16695,7 @@
 
 func (c *ManagementUploadsDeleteUploadDataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16840,7 +16840,7 @@
 
 func (c *ManagementUploadsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17031,7 +17031,7 @@
 
 func (c *ManagementUploadsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17241,7 +17241,7 @@
 
 func (c *ManagementUploadsUploadDataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17437,7 +17437,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17569,7 +17569,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17721,7 +17721,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17893,7 +17893,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18054,7 +18054,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18212,7 +18212,7 @@
 
 func (c *ManagementWebPropertyAdWordsLinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18377,7 +18377,7 @@
 
 func (c *ManagementWebpropertiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18523,7 +18523,7 @@
 
 func (c *ManagementWebpropertiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18685,7 +18685,7 @@
 
 func (c *ManagementWebpropertiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18836,7 +18836,7 @@
 
 func (c *ManagementWebpropertiesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18984,7 +18984,7 @@
 
 func (c *ManagementWebpropertiesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19132,7 +19132,7 @@
 
 func (c *ManagementWebpropertyUserLinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19252,7 +19252,7 @@
 
 func (c *ManagementWebpropertyUserLinksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19424,7 +19424,7 @@
 
 func (c *ManagementWebpropertyUserLinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19584,7 +19584,7 @@
 
 func (c *ManagementWebpropertyUserLinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19747,7 +19747,7 @@
 
 func (c *MetadataColumnsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19881,7 +19881,7 @@
 
 func (c *ProvisioningCreateAccountTicketCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20003,7 +20003,7 @@
 
 func (c *ProvisioningCreateAccountTreeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20125,7 +20125,7 @@
 
 func (c *UserDeletionUserDeletionRequestUpsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/analyticsreporting/v4/analyticsreporting-gen.go b/analyticsreporting/v4/analyticsreporting-gen.go
index f02de45..869a16d 100644
--- a/analyticsreporting/v4/analyticsreporting-gen.go
+++ b/analyticsreporting/v4/analyticsreporting-gen.go
@@ -3012,7 +3012,7 @@
 
 func (c *ReportsBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3138,7 +3138,7 @@
 
 func (c *UserActivitySearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go b/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
index a21a58d..8658e10 100644
--- a/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
+++ b/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
@@ -2076,7 +2076,7 @@
 
 func (c *CustomersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2230,7 +2230,7 @@
 
 func (c *CustomersConfigurationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2367,7 +2367,7 @@
 
 func (c *CustomersConfigurationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2505,7 +2505,7 @@
 
 func (c *CustomersConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2646,7 +2646,7 @@
 
 func (c *CustomersConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2791,7 +2791,7 @@
 
 func (c *CustomersConfigurationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2938,7 +2938,7 @@
 
 func (c *CustomersDevicesApplyConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3084,7 +3084,7 @@
 
 func (c *CustomersDevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3240,7 +3240,7 @@
 
 func (c *CustomersDevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3404,7 +3404,7 @@
 
 func (c *CustomersDevicesRemoveConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3547,7 +3547,7 @@
 
 func (c *CustomersDevicesUnclaimCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3695,7 +3695,7 @@
 
 func (c *CustomersDpcsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3840,7 +3840,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3980,7 +3980,7 @@
 
 func (c *PartnersCustomersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4145,7 +4145,7 @@
 
 func (c *PartnersCustomersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4313,7 +4313,7 @@
 
 func (c *PartnersDevicesClaimCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4455,7 +4455,7 @@
 
 func (c *PartnersDevicesClaimAsyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4594,7 +4594,7 @@
 
 func (c *PartnersDevicesFindByIdentifierCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4760,7 +4760,7 @@
 
 func (c *PartnersDevicesFindByOwnerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4928,7 +4928,7 @@
 
 func (c *PartnersDevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5062,7 +5062,7 @@
 
 func (c *PartnersDevicesMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5212,7 +5212,7 @@
 
 func (c *PartnersDevicesUnclaimCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5355,7 +5355,7 @@
 
 func (c *PartnersDevicesUnclaimAsyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5499,7 +5499,7 @@
 
 func (c *PartnersDevicesUpdateMetadataAsyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5660,7 +5660,7 @@
 
 func (c *PartnersVendorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5847,7 +5847,7 @@
 
 func (c *PartnersVendorsCustomersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidenterprise/v1/androidenterprise-gen.go b/androidenterprise/v1/androidenterprise-gen.go
index 169a141..54a725f 100644
--- a/androidenterprise/v1/androidenterprise-gen.go
+++ b/androidenterprise/v1/androidenterprise-gen.go
@@ -4042,7 +4042,7 @@
 
 func (c *DevicesForceReportUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4173,7 +4173,7 @@
 
 func (c *DevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4340,7 +4340,7 @@
 
 func (c *DevicesGetStateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4500,7 +4500,7 @@
 
 func (c *DevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4657,7 +4657,7 @@
 
 func (c *DevicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4825,7 +4825,7 @@
 
 func (c *DevicesSetStateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4994,7 +4994,7 @@
 
 func (c *DevicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5159,7 +5159,7 @@
 
 func (c *EnterprisesAcknowledgeNotificationSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5266,7 +5266,7 @@
 
 func (c *EnterprisesCompleteSignupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5398,7 +5398,7 @@
 
 func (c *EnterprisesCreateWebTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5535,7 +5535,7 @@
 
 func (c *EnterprisesEnrollCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5681,7 +5681,7 @@
 
 func (c *EnterprisesGenerateSignupUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5813,7 +5813,7 @@
 
 func (c *EnterprisesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5981,7 +5981,7 @@
 
 func (c *EnterprisesGetServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6138,7 +6138,7 @@
 
 func (c *EnterprisesGetStoreLayoutCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6283,7 +6283,7 @@
 
 func (c *EnterprisesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6445,7 +6445,7 @@
 
 func (c *EnterprisesPullNotificationSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6576,7 +6576,7 @@
 
 func (c *EnterprisesSendTestPushNotificationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6709,7 +6709,7 @@
 
 func (c *EnterprisesSetAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6854,7 +6854,7 @@
 
 func (c *EnterprisesSetStoreLayoutCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6990,7 +6990,7 @@
 
 func (c *EnterprisesUnenrollCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7094,7 +7094,7 @@
 
 func (c *EntitlementsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7225,7 +7225,7 @@
 
 func (c *EntitlementsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7386,7 +7386,7 @@
 
 func (c *EntitlementsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7542,7 +7542,7 @@
 
 func (c *EntitlementsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7715,7 +7715,7 @@
 
 func (c *EntitlementsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7886,7 +7886,7 @@
 
 func (c *GrouplicensesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8037,7 +8037,7 @@
 
 func (c *GrouplicensesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8182,7 +8182,7 @@
 
 func (c *GrouplicenseusersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8329,7 +8329,7 @@
 
 func (c *InstallsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8470,7 +8470,7 @@
 
 func (c *InstallsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8641,7 +8641,7 @@
 
 func (c *InstallsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8798,7 +8798,7 @@
 
 func (c *InstallsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8968,7 +8968,7 @@
 
 func (c *InstallsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9135,7 +9135,7 @@
 
 func (c *ManagedconfigurationsfordeviceDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9276,7 +9276,7 @@
 
 func (c *ManagedconfigurationsfordeviceGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9447,7 +9447,7 @@
 
 func (c *ManagedconfigurationsfordeviceListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9605,7 +9605,7 @@
 
 func (c *ManagedconfigurationsfordevicePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9774,7 +9774,7 @@
 
 func (c *ManagedconfigurationsfordeviceUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9939,7 +9939,7 @@
 
 func (c *ManagedconfigurationsforuserDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10071,7 +10071,7 @@
 
 func (c *ManagedconfigurationsforuserGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10232,7 +10232,7 @@
 
 func (c *ManagedconfigurationsforuserListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10385,7 +10385,7 @@
 
 func (c *ManagedconfigurationsforuserPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10548,7 +10548,7 @@
 
 func (c *ManagedconfigurationsforuserUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10714,7 +10714,7 @@
 
 func (c *ManagedconfigurationssettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10874,7 +10874,7 @@
 
 func (c *PermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11020,7 +11020,7 @@
 
 func (c *ProductsApproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11156,7 +11156,7 @@
 
 func (c *ProductsGenerateApprovalUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11319,7 +11319,7 @@
 
 func (c *ProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11489,7 +11489,7 @@
 
 func (c *ProductsGetAppRestrictionsSchemaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11647,7 +11647,7 @@
 
 func (c *ProductsGetPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11842,7 +11842,7 @@
 
 func (c *ProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12002,7 +12002,7 @@
 
 func (c *ProductsUnapproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12116,7 +12116,7 @@
 
 func (c *ServiceaccountkeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12233,7 +12233,7 @@
 
 func (c *ServiceaccountkeysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12384,7 +12384,7 @@
 
 func (c *ServiceaccountkeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12519,7 +12519,7 @@
 
 func (c *StorelayoutclustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12650,7 +12650,7 @@
 
 func (c *StorelayoutclustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12801,7 +12801,7 @@
 
 func (c *StorelayoutclustersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12958,7 +12958,7 @@
 
 func (c *StorelayoutclustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13103,7 +13103,7 @@
 
 func (c *StorelayoutclustersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13261,7 +13261,7 @@
 
 func (c *StorelayoutclustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13415,7 +13415,7 @@
 
 func (c *StorelayoutpagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13536,7 +13536,7 @@
 
 func (c *StorelayoutpagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13677,7 +13677,7 @@
 
 func (c *StorelayoutpagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13824,7 +13824,7 @@
 
 func (c *StorelayoutpagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13960,7 +13960,7 @@
 
 func (c *StorelayoutpagesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14108,7 +14108,7 @@
 
 func (c *StorelayoutpagesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14254,7 +14254,7 @@
 
 func (c *UsersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14371,7 +14371,7 @@
 
 func (c *UsersGenerateAuthenticationTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14513,7 +14513,7 @@
 
 func (c *UsersGenerateTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14662,7 +14662,7 @@
 
 func (c *UsersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14815,7 +14815,7 @@
 
 func (c *UsersGetAvailableProductSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14962,7 +14962,7 @@
 
 func (c *UsersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15113,7 +15113,7 @@
 
 func (c *UsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15261,7 +15261,7 @@
 
 func (c *UsersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15411,7 +15411,7 @@
 
 func (c *UsersRevokeDeviceAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15522,7 +15522,7 @@
 
 func (c *UsersRevokeTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15637,7 +15637,7 @@
 
 func (c *UsersSetAvailableProductSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15790,7 +15790,7 @@
 
 func (c *UsersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15936,7 +15936,7 @@
 
 func (c *WebappsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16057,7 +16057,7 @@
 
 func (c *WebappsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16198,7 +16198,7 @@
 
 func (c *WebappsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16345,7 +16345,7 @@
 
 func (c *WebappsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16481,7 +16481,7 @@
 
 func (c *WebappsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16629,7 +16629,7 @@
 
 func (c *WebappsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidmanagement/v1/androidmanagement-gen.go b/androidmanagement/v1/androidmanagement-gen.go
index 54ef497..2e20781 100644
--- a/androidmanagement/v1/androidmanagement-gen.go
+++ b/androidmanagement/v1/androidmanagement-gen.go
@@ -3924,7 +3924,7 @@
 
 func (c *EnterprisesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4076,7 +4076,7 @@
 
 func (c *EnterprisesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4219,7 +4219,7 @@
 
 func (c *EnterprisesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4383,7 +4383,7 @@
 
 func (c *EnterprisesApplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4533,7 +4533,7 @@
 
 func (c *EnterprisesDevicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4685,7 +4685,7 @@
 
 func (c *EnterprisesDevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4822,7 +4822,7 @@
 
 func (c *EnterprisesDevicesIssueCommandCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4985,7 +4985,7 @@
 
 func (c *EnterprisesDevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5160,7 +5160,7 @@
 
 func (c *EnterprisesDevicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5313,7 +5313,7 @@
 
 func (c *EnterprisesDevicesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5446,7 +5446,7 @@
 
 func (c *EnterprisesDevicesOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5589,7 +5589,7 @@
 
 func (c *EnterprisesDevicesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5763,7 +5763,7 @@
 
 func (c *EnterprisesDevicesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5935,7 +5935,7 @@
 
 func (c *EnterprisesEnrollmentTokensCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6074,7 +6074,7 @@
 
 func (c *EnterprisesEnrollmentTokensDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6205,7 +6205,7 @@
 
 func (c *EnterprisesPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6346,7 +6346,7 @@
 
 func (c *EnterprisesPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6504,7 +6504,7 @@
 
 func (c *EnterprisesPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6679,7 +6679,7 @@
 
 func (c *EnterprisesPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6825,7 +6825,7 @@
 
 func (c *EnterprisesWebAppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6963,7 +6963,7 @@
 
 func (c *EnterprisesWebAppsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7104,7 +7104,7 @@
 
 func (c *EnterprisesWebAppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7262,7 +7262,7 @@
 
 func (c *EnterprisesWebAppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7437,7 +7437,7 @@
 
 func (c *EnterprisesWebAppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7584,7 +7584,7 @@
 
 func (c *EnterprisesWebTokensCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7739,7 +7739,7 @@
 
 func (c *SignupUrlsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidpublisher/v1.1/androidpublisher-gen.go b/androidpublisher/v1.1/androidpublisher-gen.go
index 9116a3f..4210c89 100644
--- a/androidpublisher/v1.1/androidpublisher-gen.go
+++ b/androidpublisher/v1.1/androidpublisher-gen.go
@@ -324,7 +324,7 @@
 
 func (c *InapppurchasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -476,7 +476,7 @@
 
 func (c *PurchasesCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -608,7 +608,7 @@
 
 func (c *PurchasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidpublisher/v1/androidpublisher-gen.go b/androidpublisher/v1/androidpublisher-gen.go
index a0def02..80d7125 100644
--- a/androidpublisher/v1/androidpublisher-gen.go
+++ b/androidpublisher/v1/androidpublisher-gen.go
@@ -234,7 +234,7 @@
 
 func (c *PurchasesCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -366,7 +366,7 @@
 
 func (c *PurchasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidpublisher/v2/androidpublisher-gen.go b/androidpublisher/v2/androidpublisher-gen.go
index 94d55a7..547efe4 100644
--- a/androidpublisher/v2/androidpublisher-gen.go
+++ b/androidpublisher/v2/androidpublisher-gen.go
@@ -2536,7 +2536,7 @@
 
 func (c *EditsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2676,7 +2676,7 @@
 
 func (c *EditsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2799,7 +2799,7 @@
 
 func (c *EditsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2941,7 +2941,7 @@
 
 func (c *EditsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3080,7 +3080,7 @@
 
 func (c *EditsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3223,7 +3223,7 @@
 
 func (c *EditsApklistingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3353,7 +3353,7 @@
 
 func (c *EditsApklistingsDeleteallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3488,7 +3488,7 @@
 
 func (c *EditsApklistingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3660,7 +3660,7 @@
 
 func (c *EditsApklistingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3818,7 +3818,7 @@
 
 func (c *EditsApklistingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3988,7 +3988,7 @@
 
 func (c *EditsApklistingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4157,7 +4157,7 @@
 
 func (c *EditsApksAddexternallyhostedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4314,7 +4314,7 @@
 
 func (c *EditsApksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4494,7 +4494,7 @@
 
 func (c *EditsApksUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4688,7 +4688,7 @@
 
 func (c *EditsBundlesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4882,7 +4882,7 @@
 
 func (c *EditsBundlesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5115,7 +5115,7 @@
 
 func (c *EditsDeobfuscationfilesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5332,7 +5332,7 @@
 
 func (c *EditsDetailsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5476,7 +5476,7 @@
 
 func (c *EditsDetailsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5624,7 +5624,7 @@
 
 func (c *EditsDetailsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5785,7 +5785,7 @@
 
 func (c *EditsExpansionfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5958,7 +5958,7 @@
 
 func (c *EditsExpansionfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6136,7 +6136,7 @@
 
 func (c *EditsExpansionfilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6351,7 +6351,7 @@
 
 func (c *EditsExpansionfilesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6564,7 +6564,7 @@
 
 func (c *EditsImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6724,7 +6724,7 @@
 
 func (c *EditsImagesDeleteallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6914,7 +6914,7 @@
 
 func (c *EditsImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7137,7 +7137,7 @@
 
 func (c *EditsImagesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7359,7 +7359,7 @@
 
 func (c *EditsListingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7477,7 +7477,7 @@
 
 func (c *EditsListingsDeleteallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7600,7 +7600,7 @@
 
 func (c *EditsListingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7761,7 +7761,7 @@
 
 func (c *EditsListingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7907,7 +7907,7 @@
 
 func (c *EditsListingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8065,7 +8065,7 @@
 
 func (c *EditsListingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8232,7 +8232,7 @@
 
 func (c *EditsTestersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8384,7 +8384,7 @@
 
 func (c *EditsTestersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8541,7 +8541,7 @@
 
 func (c *EditsTestersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8708,7 +8708,7 @@
 
 func (c *EditsTracksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8868,7 +8868,7 @@
 
 func (c *EditsTracksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9014,7 +9014,7 @@
 
 func (c *EditsTracksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9172,7 +9172,7 @@
 
 func (c *EditsTracksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9326,7 +9326,7 @@
 
 func (c *InappproductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9447,7 +9447,7 @@
 
 func (c *InappproductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9597,7 +9597,7 @@
 
 func (c *InappproductsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9768,7 +9768,7 @@
 
 func (c *InappproductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9928,7 +9928,7 @@
 
 func (c *InappproductsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10091,7 +10091,7 @@
 
 func (c *InappproductsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10252,7 +10252,7 @@
 
 func (c *OrdersRefundCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10380,7 +10380,7 @@
 
 func (c *PurchasesProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10532,7 +10532,7 @@
 
 func (c *PurchasesSubscriptionsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10655,7 +10655,7 @@
 
 func (c *PurchasesSubscriptionsDeferCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10824,7 +10824,7 @@
 
 func (c *PurchasesSubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10977,7 +10977,7 @@
 
 func (c *PurchasesSubscriptionsRefundCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11099,7 +11099,7 @@
 
 func (c *PurchasesSubscriptionsRevokeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11269,7 +11269,7 @@
 
 func (c *PurchasesVoidedpurchasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11446,7 +11446,7 @@
 
 func (c *ReviewsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11625,7 +11625,7 @@
 
 func (c *ReviewsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11778,7 +11778,7 @@
 
 func (c *ReviewsReplyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/androidpublisher/v3/androidpublisher-gen.go b/androidpublisher/v3/androidpublisher-gen.go
index 58e67f5..6f3e1d7 100644
--- a/androidpublisher/v3/androidpublisher-gen.go
+++ b/androidpublisher/v3/androidpublisher-gen.go
@@ -2784,7 +2784,7 @@
 
 func (c *EditsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2924,7 +2924,7 @@
 
 func (c *EditsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3047,7 +3047,7 @@
 
 func (c *EditsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3189,7 +3189,7 @@
 
 func (c *EditsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3328,7 +3328,7 @@
 
 func (c *EditsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3472,7 +3472,7 @@
 
 func (c *EditsApksAddexternallyhostedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3629,7 +3629,7 @@
 
 func (c *EditsApksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3809,7 +3809,7 @@
 
 func (c *EditsApksUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4003,7 +4003,7 @@
 
 func (c *EditsBundlesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4197,7 +4197,7 @@
 
 func (c *EditsBundlesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4430,7 +4430,7 @@
 
 func (c *EditsDeobfuscationfilesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4647,7 +4647,7 @@
 
 func (c *EditsDetailsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4791,7 +4791,7 @@
 
 func (c *EditsDetailsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4939,7 +4939,7 @@
 
 func (c *EditsDetailsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5100,7 +5100,7 @@
 
 func (c *EditsExpansionfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5273,7 +5273,7 @@
 
 func (c *EditsExpansionfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5451,7 +5451,7 @@
 
 func (c *EditsExpansionfilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5666,7 +5666,7 @@
 
 func (c *EditsExpansionfilesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5879,7 +5879,7 @@
 
 func (c *EditsImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6039,7 +6039,7 @@
 
 func (c *EditsImagesDeleteallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6229,7 +6229,7 @@
 
 func (c *EditsImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6452,7 +6452,7 @@
 
 func (c *EditsImagesUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6674,7 +6674,7 @@
 
 func (c *EditsListingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6792,7 +6792,7 @@
 
 func (c *EditsListingsDeleteallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6915,7 +6915,7 @@
 
 func (c *EditsListingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7076,7 +7076,7 @@
 
 func (c *EditsListingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7222,7 +7222,7 @@
 
 func (c *EditsListingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7380,7 +7380,7 @@
 
 func (c *EditsListingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7547,7 +7547,7 @@
 
 func (c *EditsTestersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7699,7 +7699,7 @@
 
 func (c *EditsTestersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7856,7 +7856,7 @@
 
 func (c *EditsTestersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8023,7 +8023,7 @@
 
 func (c *EditsTracksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8183,7 +8183,7 @@
 
 func (c *EditsTracksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8329,7 +8329,7 @@
 
 func (c *EditsTracksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8487,7 +8487,7 @@
 
 func (c *EditsTracksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8641,7 +8641,7 @@
 
 func (c *InappproductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8762,7 +8762,7 @@
 
 func (c *InappproductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8912,7 +8912,7 @@
 
 func (c *InappproductsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9083,7 +9083,7 @@
 
 func (c *InappproductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9243,7 +9243,7 @@
 
 func (c *InappproductsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9406,7 +9406,7 @@
 
 func (c *InappproductsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9600,7 +9600,7 @@
 
 func (c *InternalappsharingartifactsUploadapkCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9819,7 +9819,7 @@
 
 func (c *InternalappsharingartifactsUploadbundleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10004,7 +10004,7 @@
 
 func (c *OrdersRefundCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10123,7 +10123,7 @@
 
 func (c *PurchasesProductsAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10262,7 +10262,7 @@
 
 func (c *PurchasesProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10415,7 +10415,7 @@
 
 func (c *PurchasesSubscriptionsAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10544,7 +10544,7 @@
 
 func (c *PurchasesSubscriptionsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10667,7 +10667,7 @@
 
 func (c *PurchasesSubscriptionsDeferCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10836,7 +10836,7 @@
 
 func (c *PurchasesSubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10989,7 +10989,7 @@
 
 func (c *PurchasesSubscriptionsRefundCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11111,7 +11111,7 @@
 
 func (c *PurchasesSubscriptionsRevokeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11297,7 +11297,7 @@
 
 func (c *PurchasesVoidedpurchasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11480,7 +11480,7 @@
 
 func (c *ReviewsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11659,7 +11659,7 @@
 
 func (c *ReviewsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11812,7 +11812,7 @@
 
 func (c *ReviewsReplyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/appengine/v1/appengine-gen.go b/appengine/v1/appengine-gen.go
index ecf76ab..4197e85 100644
--- a/appengine/v1/appengine-gen.go
+++ b/appengine/v1/appengine-gen.go
@@ -3704,7 +3704,7 @@
 
 func (c *AppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3840,7 +3840,7 @@
 
 func (c *AppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3988,7 +3988,7 @@
 
 func (c *AppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4141,7 +4141,7 @@
 
 func (c *AppsRepairCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4280,7 +4280,7 @@
 
 func (c *AppsAuthorizedCertificatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4419,7 +4419,7 @@
 
 func (c *AppsAuthorizedCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4580,7 +4580,7 @@
 
 func (c *AppsAuthorizedCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4768,7 +4768,7 @@
 
 func (c *AppsAuthorizedCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4960,7 +4960,7 @@
 
 func (c *AppsAuthorizedCertificatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5136,7 +5136,7 @@
 
 func (c *AppsAuthorizedDomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5320,7 +5320,7 @@
 
 func (c *AppsDomainMappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5471,7 +5471,7 @@
 
 func (c *AppsDomainMappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5621,7 +5621,7 @@
 
 func (c *AppsDomainMappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5788,7 +5788,7 @@
 
 func (c *AppsDomainMappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5969,7 +5969,7 @@
 
 func (c *AppsDomainMappingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6126,7 +6126,7 @@
 
 func (c *AppsFirewallIngressRulesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6265,7 +6265,7 @@
 
 func (c *AppsFirewallIngressRulesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6404,7 +6404,7 @@
 
 func (c *AppsFirewallIngressRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6554,7 +6554,7 @@
 
 func (c *AppsFirewallIngressRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6730,7 +6730,7 @@
 
 func (c *AppsFirewallIngressRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6912,7 +6912,7 @@
 
 func (c *AppsFirewallIngressRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7076,7 +7076,7 @@
 
 func (c *AppsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7251,7 +7251,7 @@
 
 func (c *AppsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7437,7 +7437,7 @@
 
 func (c *AppsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7620,7 +7620,7 @@
 
 func (c *AppsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7793,7 +7793,7 @@
 
 func (c *AppsServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7943,7 +7943,7 @@
 
 func (c *AppsServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8110,7 +8110,7 @@
 
 func (c *AppsServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8307,7 +8307,7 @@
 
 func (c *AppsServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8467,7 +8467,7 @@
 
 func (c *AppsServicesVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8616,7 +8616,7 @@
 
 func (c *AppsServicesVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8789,7 +8789,7 @@
 
 func (c *AppsServicesVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8986,7 +8986,7 @@
 
 func (c *AppsServicesVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9236,7 +9236,7 @@
 
 func (c *AppsServicesVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9409,7 +9409,7 @@
 
 func (c *AppsServicesVersionsInstancesDebugCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9587,7 +9587,7 @@
 
 func (c *AppsServicesVersionsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9757,7 +9757,7 @@
 
 func (c *AppsServicesVersionsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9947,7 +9947,7 @@
 
 func (c *AppsServicesVersionsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/appengine/v1alpha/appengine-gen.go b/appengine/v1alpha/appengine-gen.go
index e853d8d..f07ebc3 100644
--- a/appengine/v1alpha/appengine-gen.go
+++ b/appengine/v1alpha/appengine-gen.go
@@ -1269,7 +1269,7 @@
 
 func (c *AppsAuthorizedCertificatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1408,7 +1408,7 @@
 
 func (c *AppsAuthorizedCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1569,7 +1569,7 @@
 
 func (c *AppsAuthorizedCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1757,7 +1757,7 @@
 
 func (c *AppsAuthorizedCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1949,7 +1949,7 @@
 
 func (c *AppsAuthorizedCertificatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2125,7 +2125,7 @@
 
 func (c *AppsAuthorizedDomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2320,7 +2320,7 @@
 
 func (c *AppsDomainMappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2476,7 +2476,7 @@
 
 func (c *AppsDomainMappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2626,7 +2626,7 @@
 
 func (c *AppsDomainMappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2793,7 +2793,7 @@
 
 func (c *AppsDomainMappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2986,7 +2986,7 @@
 
 func (c *AppsDomainMappingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3155,7 +3155,7 @@
 
 func (c *AppsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3330,7 +3330,7 @@
 
 func (c *AppsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3516,7 +3516,7 @@
 
 func (c *AppsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3699,7 +3699,7 @@
 
 func (c *AppsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/appengine/v1beta/appengine-gen.go b/appengine/v1beta/appengine-gen.go
index d24ef77..7f0de15 100644
--- a/appengine/v1beta/appengine-gen.go
+++ b/appengine/v1beta/appengine-gen.go
@@ -3840,7 +3840,7 @@
 
 func (c *AppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3976,7 +3976,7 @@
 
 func (c *AppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4124,7 +4124,7 @@
 
 func (c *AppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4277,7 +4277,7 @@
 
 func (c *AppsRepairCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4416,7 +4416,7 @@
 
 func (c *AppsAuthorizedCertificatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4555,7 +4555,7 @@
 
 func (c *AppsAuthorizedCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4716,7 +4716,7 @@
 
 func (c *AppsAuthorizedCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4904,7 +4904,7 @@
 
 func (c *AppsAuthorizedCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5096,7 +5096,7 @@
 
 func (c *AppsAuthorizedCertificatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5272,7 +5272,7 @@
 
 func (c *AppsAuthorizedDomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5456,7 +5456,7 @@
 
 func (c *AppsDomainMappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5607,7 +5607,7 @@
 
 func (c *AppsDomainMappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5757,7 +5757,7 @@
 
 func (c *AppsDomainMappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5924,7 +5924,7 @@
 
 func (c *AppsDomainMappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6105,7 +6105,7 @@
 
 func (c *AppsDomainMappingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6262,7 +6262,7 @@
 
 func (c *AppsFirewallIngressRulesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6401,7 +6401,7 @@
 
 func (c *AppsFirewallIngressRulesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6540,7 +6540,7 @@
 
 func (c *AppsFirewallIngressRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6690,7 +6690,7 @@
 
 func (c *AppsFirewallIngressRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6866,7 +6866,7 @@
 
 func (c *AppsFirewallIngressRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7048,7 +7048,7 @@
 
 func (c *AppsFirewallIngressRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7212,7 +7212,7 @@
 
 func (c *AppsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7387,7 +7387,7 @@
 
 func (c *AppsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7573,7 +7573,7 @@
 
 func (c *AppsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7756,7 +7756,7 @@
 
 func (c *AppsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7929,7 +7929,7 @@
 
 func (c *AppsServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8079,7 +8079,7 @@
 
 func (c *AppsServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8246,7 +8246,7 @@
 
 func (c *AppsServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8444,7 +8444,7 @@
 
 func (c *AppsServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8604,7 +8604,7 @@
 
 func (c *AppsServicesVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8753,7 +8753,7 @@
 
 func (c *AppsServicesVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8926,7 +8926,7 @@
 
 func (c *AppsServicesVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9123,7 +9123,7 @@
 
 func (c *AppsServicesVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9375,7 +9375,7 @@
 
 func (c *AppsServicesVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9548,7 +9548,7 @@
 
 func (c *AppsServicesVersionsInstancesDebugCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9726,7 +9726,7 @@
 
 func (c *AppsServicesVersionsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9896,7 +9896,7 @@
 
 func (c *AppsServicesVersionsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10086,7 +10086,7 @@
 
 func (c *AppsServicesVersionsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/appsactivity/v1/appsactivity-gen.go b/appsactivity/v1/appsactivity-gen.go
index 4dd7747..652c810 100644
--- a/appsactivity/v1/appsactivity-gen.go
+++ b/appsactivity/v1/appsactivity-gen.go
@@ -719,7 +719,7 @@
 
 func (c *ActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigquery/v2/bigquery-gen.go b/bigquery/v2/bigquery-gen.go
index a9b8b11..6b9e387 100644
--- a/bigquery/v2/bigquery-gen.go
+++ b/bigquery/v2/bigquery-gen.go
@@ -6347,7 +6347,7 @@
 
 func (c *DatasetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6474,7 +6474,7 @@
 
 func (c *DatasetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6618,7 +6618,7 @@
 
 func (c *DatasetsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6798,7 +6798,7 @@
 
 func (c *DatasetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6981,7 +6981,7 @@
 
 func (c *DatasetsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7132,7 +7132,7 @@
 
 func (c *DatasetsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7290,7 +7290,7 @@
 
 func (c *JobsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7455,7 +7455,7 @@
 
 func (c *JobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7654,7 +7654,7 @@
 
 func (c *JobsGetQueryResultsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7888,7 +7888,7 @@
 
 func (c *JobsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8155,7 +8155,7 @@
 
 func (c *JobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8375,7 +8375,7 @@
 
 func (c *JobsQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8518,7 +8518,7 @@
 
 func (c *ModelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8654,7 +8654,7 @@
 
 func (c *ModelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8839,7 +8839,7 @@
 
 func (c *ModelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9022,7 +9022,7 @@
 
 func (c *ModelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9191,7 +9191,7 @@
 
 func (c *ProjectsGetServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9349,7 +9349,7 @@
 
 func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9507,7 +9507,7 @@
 
 func (c *RoutinesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9651,7 +9651,7 @@
 
 func (c *RoutinesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9815,7 +9815,7 @@
 
 func (c *RoutinesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9994,7 +9994,7 @@
 
 func (c *RoutinesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10179,7 +10179,7 @@
 
 func (c *RoutinesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10343,7 +10343,7 @@
 
 func (c *TabledataInsertAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10542,7 +10542,7 @@
 
 func (c *TabledataListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10740,7 +10740,7 @@
 
 func (c *TablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10882,7 +10882,7 @@
 
 func (c *TablesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11041,7 +11041,7 @@
 
 func (c *TablesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11214,7 +11214,7 @@
 
 func (c *TablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11397,7 +11397,7 @@
 
 func (c *TablesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11558,7 +11558,7 @@
 
 func (c *TablesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigqueryconnection/v1beta1/bigqueryconnection-gen.go b/bigqueryconnection/v1beta1/bigqueryconnection-gen.go
index edcaeb5..7329077 100644
--- a/bigqueryconnection/v1beta1/bigqueryconnection-gen.go
+++ b/bigqueryconnection/v1beta1/bigqueryconnection-gen.go
@@ -1046,7 +1046,7 @@
 
 func (c *ProjectsLocationsConnectionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1190,7 +1190,7 @@
 
 func (c *ProjectsLocationsConnectionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1332,7 +1332,7 @@
 
 func (c *ProjectsLocationsConnectionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1471,7 +1471,7 @@
 
 func (c *ProjectsLocationsConnectionsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1634,7 +1634,7 @@
 
 func (c *ProjectsLocationsConnectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1811,7 +1811,7 @@
 
 func (c *ProjectsLocationsConnectionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1963,7 +1963,7 @@
 
 func (c *ProjectsLocationsConnectionsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2114,7 +2114,7 @@
 
 func (c *ProjectsLocationsConnectionsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2255,7 +2255,7 @@
 
 func (c *ProjectsLocationsConnectionsUpdateCredentialCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
index 149a63d..a68d641 100644
--- a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
+++ b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
@@ -1453,7 +1453,7 @@
 
 func (c *ProjectsDataSourcesCheckValidCredsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1607,7 +1607,7 @@
 
 func (c *ProjectsDataSourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1773,7 +1773,7 @@
 
 func (c *ProjectsDataSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1952,7 +1952,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2121,7 +2121,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2305,7 +2305,7 @@
 
 func (c *ProjectsLocationsDataSourcesCheckValidCredsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2459,7 +2459,7 @@
 
 func (c *ProjectsLocationsDataSourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2625,7 +2625,7 @@
 
 func (c *ProjectsLocationsDataSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2842,7 +2842,7 @@
 
 func (c *ProjectsLocationsTransferConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2991,7 +2991,7 @@
 
 func (c *ProjectsLocationsTransferConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3133,7 +3133,7 @@
 
 func (c *ProjectsLocationsTransferConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3306,7 +3306,7 @@
 
 func (c *ProjectsLocationsTransferConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3537,7 +3537,7 @@
 
 func (c *ProjectsLocationsTransferConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3700,7 +3700,7 @@
 
 func (c *ProjectsLocationsTransferConfigsScheduleRunsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3847,7 +3847,7 @@
 
 func (c *ProjectsLocationsTransferConfigsStartManualRunsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3986,7 +3986,7 @@
 
 func (c *ProjectsLocationsTransferConfigsRunsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4128,7 +4128,7 @@
 
 func (c *ProjectsLocationsTransferConfigsRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4319,7 +4319,7 @@
 
 func (c *ProjectsLocationsTransferConfigsRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4553,7 +4553,7 @@
 
 func (c *ProjectsLocationsTransferConfigsRunsTransferLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4782,7 +4782,7 @@
 
 func (c *ProjectsTransferConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4931,7 +4931,7 @@
 
 func (c *ProjectsTransferConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5073,7 +5073,7 @@
 
 func (c *ProjectsTransferConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5246,7 +5246,7 @@
 
 func (c *ProjectsTransferConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5477,7 +5477,7 @@
 
 func (c *ProjectsTransferConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5640,7 +5640,7 @@
 
 func (c *ProjectsTransferConfigsScheduleRunsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5787,7 +5787,7 @@
 
 func (c *ProjectsTransferConfigsStartManualRunsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5926,7 +5926,7 @@
 
 func (c *ProjectsTransferConfigsRunsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6068,7 +6068,7 @@
 
 func (c *ProjectsTransferConfigsRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6259,7 +6259,7 @@
 
 func (c *ProjectsTransferConfigsRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6493,7 +6493,7 @@
 
 func (c *ProjectsTransferConfigsRunsTransferLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigqueryreservation/v1/bigqueryreservation-gen.go b/bigqueryreservation/v1/bigqueryreservation-gen.go
index d43e709..27385b2 100644
--- a/bigqueryreservation/v1/bigqueryreservation-gen.go
+++ b/bigqueryreservation/v1/bigqueryreservation-gen.go
@@ -446,7 +446,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -625,7 +625,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigqueryreservation/v1alpha2/bigqueryreservation-gen.go b/bigqueryreservation/v1alpha2/bigqueryreservation-gen.go
index 097d051..497a2eb 100644
--- a/bigqueryreservation/v1alpha2/bigqueryreservation-gen.go
+++ b/bigqueryreservation/v1alpha2/bigqueryreservation-gen.go
@@ -744,7 +744,7 @@
 
 func (c *ProjectsLocationsSearchReservationGrantsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -923,7 +923,7 @@
 
 func (c *ProjectsLocationsReservationGrantsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1076,7 +1076,7 @@
 
 func (c *ProjectsLocationsReservationGrantsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1243,7 +1243,7 @@
 
 func (c *ProjectsLocationsReservationGrantsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1422,7 +1422,7 @@
 
 func (c *ProjectsLocationsReservationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1579,7 +1579,7 @@
 
 func (c *ProjectsLocationsReservationsCreateReservationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1741,7 +1741,7 @@
 
 func (c *ProjectsLocationsReservationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1888,7 +1888,7 @@
 
 func (c *ProjectsLocationsReservationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2062,7 +2062,7 @@
 
 func (c *ProjectsLocationsReservationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2244,7 +2244,7 @@
 
 func (c *ProjectsLocationsReservationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2393,7 +2393,7 @@
 
 func (c *ProjectsLocationsReservationsSlotPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2535,7 +2535,7 @@
 
 func (c *ProjectsLocationsReservationsSlotPoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2694,7 +2694,7 @@
 
 func (c *ProjectsLocationsReservationsSlotPoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigqueryreservation/v1beta1/bigqueryreservation-gen.go b/bigqueryreservation/v1beta1/bigqueryreservation-gen.go
index 6cb0cb2..b8a4f3a 100644
--- a/bigqueryreservation/v1beta1/bigqueryreservation-gen.go
+++ b/bigqueryreservation/v1beta1/bigqueryreservation-gen.go
@@ -918,7 +918,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1085,7 +1085,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1315,7 +1315,7 @@
 
 func (c *ProjectsLocationsSearchAssignmentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1490,7 +1490,7 @@
 
 func (c *ProjectsLocationsCapacityCommitmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1632,7 +1632,7 @@
 
 func (c *ProjectsLocationsCapacityCommitmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1791,7 +1791,7 @@
 
 func (c *ProjectsLocationsCapacityCommitmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1974,7 +1974,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2120,7 +2120,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2265,7 +2265,7 @@
 
 func (c *ProjectsLocationsReservationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2413,7 +2413,7 @@
 
 func (c *ProjectsLocationsReservationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2555,7 +2555,7 @@
 
 func (c *ProjectsLocationsReservationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2729,7 +2729,7 @@
 
 func (c *ProjectsLocationsReservationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2909,7 +2909,7 @@
 
 func (c *ProjectsLocationsReservationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3062,7 +3062,7 @@
 
 func (c *ProjectsLocationsReservationsAssignmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3215,7 +3215,7 @@
 
 func (c *ProjectsLocationsReservationsAssignmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3388,7 +3388,7 @@
 
 func (c *ProjectsLocationsReservationsAssignmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3572,7 +3572,7 @@
 
 func (c *ProjectsLocationsReservationsAssignmentsMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/bigtableadmin/v2/bigtableadmin-gen.go b/bigtableadmin/v2/bigtableadmin-gen.go
index f075d5d..18effe3 100644
--- a/bigtableadmin/v2/bigtableadmin-gen.go
+++ b/bigtableadmin/v2/bigtableadmin-gen.go
@@ -2626,7 +2626,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2767,7 +2767,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2917,7 +2917,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3104,7 +3104,7 @@
 
 func (c *OperationsProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3282,7 +3282,7 @@
 
 func (c *ProjectsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3425,7 +3425,7 @@
 
 func (c *ProjectsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3571,7 +3571,7 @@
 
 func (c *ProjectsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3714,7 +3714,7 @@
 
 func (c *ProjectsInstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3875,7 +3875,7 @@
 
 func (c *ProjectsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4052,7 +4052,7 @@
 
 func (c *ProjectsInstancesPartialUpdateInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4205,7 +4205,7 @@
 
 func (c *ProjectsInstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4351,7 +4351,7 @@
 
 func (c *ProjectsInstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4500,7 +4500,7 @@
 
 func (c *ProjectsInstancesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4662,7 +4662,7 @@
 
 func (c *ProjectsInstancesAppProfilesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4822,7 +4822,7 @@
 
 func (c *ProjectsInstancesAppProfilesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4973,7 +4973,7 @@
 
 func (c *ProjectsInstancesAppProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5149,7 +5149,7 @@
 
 func (c *ProjectsInstancesAppProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5336,7 +5336,7 @@
 
 func (c *ProjectsInstancesAppProfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5502,7 +5502,7 @@
 
 func (c *ProjectsInstancesClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5650,7 +5650,7 @@
 
 func (c *ProjectsInstancesClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5796,7 +5796,7 @@
 
 func (c *ProjectsInstancesClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5953,7 +5953,7 @@
 
 func (c *ProjectsInstancesClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6120,7 +6120,7 @@
 
 func (c *ProjectsInstancesClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6269,7 +6269,7 @@
 
 func (c *ProjectsInstancesTablesCheckConsistencyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6416,7 +6416,7 @@
 
 func (c *ProjectsInstancesTablesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6558,7 +6558,7 @@
 
 func (c *ProjectsInstancesTablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6698,7 +6698,7 @@
 
 func (c *ProjectsInstancesTablesDropRowRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6848,7 +6848,7 @@
 
 func (c *ProjectsInstancesTablesGenerateConsistencyTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7016,7 +7016,7 @@
 
 func (c *ProjectsInstancesTablesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7170,7 +7170,7 @@
 
 func (c *ProjectsInstancesTablesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7365,7 +7365,7 @@
 
 func (c *ProjectsInstancesTablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7555,7 +7555,7 @@
 
 func (c *ProjectsInstancesTablesModifyColumnFamiliesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7701,7 +7701,7 @@
 
 func (c *ProjectsInstancesTablesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7846,7 +7846,7 @@
 
 func (c *ProjectsInstancesTablesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7999,7 +7999,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8171,7 +8171,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/binaryauthorization/v1/binaryauthorization-gen.go b/binaryauthorization/v1/binaryauthorization-gen.go
index 9ba8c56..ff9e166 100644
--- a/binaryauthorization/v1/binaryauthorization-gen.go
+++ b/binaryauthorization/v1/binaryauthorization-gen.go
@@ -1117,7 +1117,7 @@
 
 func (c *ProjectsGetPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1260,7 +1260,7 @@
 
 func (c *ProjectsUpdatePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1412,7 +1412,7 @@
 
 func (c *ProjectsAttestorsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1556,7 +1556,7 @@
 
 func (c *ProjectsAttestorsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1698,7 +1698,7 @@
 
 func (c *ProjectsAttestorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1863,7 +1863,7 @@
 
 func (c *ProjectsAttestorsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2033,7 +2033,7 @@
 
 func (c *ProjectsAttestorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2205,7 +2205,7 @@
 
 func (c *ProjectsAttestorsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2355,7 +2355,7 @@
 
 func (c *ProjectsAttestorsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2496,7 +2496,7 @@
 
 func (c *ProjectsAttestorsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2666,7 +2666,7 @@
 
 func (c *ProjectsPolicyGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2812,7 +2812,7 @@
 
 func (c *ProjectsPolicySetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2962,7 +2962,7 @@
 
 func (c *ProjectsPolicyTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/binaryauthorization/v1beta1/binaryauthorization-gen.go b/binaryauthorization/v1beta1/binaryauthorization-gen.go
index d91cd90..42f318c 100644
--- a/binaryauthorization/v1beta1/binaryauthorization-gen.go
+++ b/binaryauthorization/v1beta1/binaryauthorization-gen.go
@@ -1117,7 +1117,7 @@
 
 func (c *ProjectsGetPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1260,7 +1260,7 @@
 
 func (c *ProjectsUpdatePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1412,7 +1412,7 @@
 
 func (c *ProjectsAttestorsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1556,7 +1556,7 @@
 
 func (c *ProjectsAttestorsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1698,7 +1698,7 @@
 
 func (c *ProjectsAttestorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1863,7 +1863,7 @@
 
 func (c *ProjectsAttestorsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2033,7 +2033,7 @@
 
 func (c *ProjectsAttestorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2205,7 +2205,7 @@
 
 func (c *ProjectsAttestorsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2355,7 +2355,7 @@
 
 func (c *ProjectsAttestorsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2496,7 +2496,7 @@
 
 func (c *ProjectsAttestorsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2666,7 +2666,7 @@
 
 func (c *ProjectsPolicyGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2812,7 +2812,7 @@
 
 func (c *ProjectsPolicySetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2962,7 +2962,7 @@
 
 func (c *ProjectsPolicyTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/blogger/v2/blogger-gen.go b/blogger/v2/blogger-gen.go
index 769dede..cb4b0f0 100644
--- a/blogger/v2/blogger-gen.go
+++ b/blogger/v2/blogger-gen.go
@@ -1230,7 +1230,7 @@
 
 func (c *BlogsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1376,7 +1376,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1564,7 +1564,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1759,7 +1759,7 @@
 
 func (c *PagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1916,7 +1916,7 @@
 
 func (c *PagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2065,7 +2065,7 @@
 
 func (c *PostsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2243,7 +2243,7 @@
 
 func (c *PostsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2428,7 +2428,7 @@
 
 func (c *UsersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2570,7 +2570,7 @@
 
 func (c *UsersBlogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/blogger/v3/blogger-gen.go b/blogger/v3/blogger-gen.go
index 4be0f07..dbe4b8f 100644
--- a/blogger/v3/blogger-gen.go
+++ b/blogger/v3/blogger-gen.go
@@ -1671,7 +1671,7 @@
 
 func (c *BlogUserInfosGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1847,7 +1847,7 @@
 
 func (c *BlogsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2022,7 +2022,7 @@
 
 func (c *BlogsGetByUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2225,7 +2225,7 @@
 
 func (c *BlogsListByUserCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2412,7 +2412,7 @@
 
 func (c *CommentsApproveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2560,7 +2560,7 @@
 
 func (c *CommentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2706,7 +2706,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2942,7 +2942,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3222,7 +3222,7 @@
 
 func (c *CommentsListByBlogCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3424,7 +3424,7 @@
 
 func (c *CommentsMarkAsSpamCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3572,7 +3572,7 @@
 
 func (c *CommentsRemoveContentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3738,7 +3738,7 @@
 
 func (c *PageViewsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3886,7 +3886,7 @@
 
 func (c *PagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4018,7 +4018,7 @@
 
 func (c *PagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4181,7 +4181,7 @@
 
 func (c *PagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4378,7 +4378,7 @@
 
 func (c *PagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4593,7 +4593,7 @@
 
 func (c *PagesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4749,7 +4749,7 @@
 
 func (c *PagesPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4887,7 +4887,7 @@
 
 func (c *PagesRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5041,7 +5041,7 @@
 
 func (c *PagesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5219,7 +5219,7 @@
 
 func (c *PostUserInfosGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5465,7 +5465,7 @@
 
 func (c *PostUserInfosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5706,7 +5706,7 @@
 
 func (c *PostsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5863,7 +5863,7 @@
 
 func (c *PostsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6067,7 +6067,7 @@
 
 func (c *PostsGetByPathCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6251,7 +6251,7 @@
 
 func (c *PostsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6500,7 +6500,7 @@
 
 func (c *PostsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6777,7 +6777,7 @@
 
 func (c *PostsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6961,7 +6961,7 @@
 
 func (c *PostsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7105,7 +7105,7 @@
 
 func (c *PostsRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7272,7 +7272,7 @@
 
 func (c *PostsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7471,7 +7471,7 @@
 
 func (c *PostsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7653,7 +7653,7 @@
 
 func (c *UsersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/books/v1/books-gen.go b/books/v1/books-gen.go
index c5a6aa7..ecd1113 100644
--- a/books/v1/books-gen.go
+++ b/books/v1/books-gen.go
@@ -4760,7 +4760,7 @@
 
 func (c *BookshelvesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4922,7 +4922,7 @@
 
 func (c *BookshelvesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5100,7 +5100,7 @@
 
 func (c *BookshelvesVolumesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5288,7 +5288,7 @@
 
 func (c *CloudloadingAddBookCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5422,7 +5422,7 @@
 
 func (c *CloudloadingDeleteBookCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5519,7 +5519,7 @@
 
 func (c *CloudloadingUpdateBookCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5652,7 +5652,7 @@
 
 func (c *DictionaryListOfflineMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5797,7 +5797,7 @@
 
 func (c *FamilysharingGetFamilyInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5939,7 +5939,7 @@
 
 func (c *FamilysharingShareCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6061,7 +6061,7 @@
 
 func (c *FamilysharingUnshareCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6191,7 +6191,7 @@
 
 func (c *LayersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6379,7 +6379,7 @@
 
 func (c *LayersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6593,7 +6593,7 @@
 
 func (c *LayersAnnotationDataGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6869,7 +6869,7 @@
 
 func (c *LayersAnnotationDataListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7124,7 +7124,7 @@
 
 func (c *LayersVolumeAnnotationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7384,7 +7384,7 @@
 
 func (c *LayersVolumeAnnotationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7623,7 +7623,7 @@
 
 func (c *MyconfigGetUserSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7754,7 +7754,7 @@
 
 func (c *MyconfigReleaseDownloadAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7918,7 +7918,7 @@
 
 func (c *MyconfigRequestAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8125,7 +8125,7 @@
 
 func (c *MyconfigSyncVolumeLicensesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8299,7 +8299,7 @@
 
 func (c *MyconfigUpdateUserSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8428,7 +8428,7 @@
 
 func (c *MylibraryAnnotationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8562,7 +8562,7 @@
 
 func (c *MylibraryAnnotationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8788,7 +8788,7 @@
 
 func (c *MylibraryAnnotationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8982,7 +8982,7 @@
 
 func (c *MylibraryAnnotationsSummaryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9124,7 +9124,7 @@
 
 func (c *MylibraryAnnotationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9285,7 +9285,7 @@
 
 func (c *MylibraryBookshelvesAddVolumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9419,7 +9419,7 @@
 
 func (c *MylibraryBookshelvesClearVolumesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9543,7 +9543,7 @@
 
 func (c *MylibraryBookshelvesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9696,7 +9696,7 @@
 
 func (c *MylibraryBookshelvesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9829,7 +9829,7 @@
 
 func (c *MylibraryBookshelvesMoveVolumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9967,7 +9967,7 @@
 
 func (c *MylibraryBookshelvesRemoveVolumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10154,7 +10154,7 @@
 
 func (c *MylibraryBookshelvesVolumesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10357,7 +10357,7 @@
 
 func (c *MylibraryReadingpositionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10536,7 +10536,7 @@
 
 func (c *MylibraryReadingpositionsSetPositionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10711,7 +10711,7 @@
 
 func (c *NotificationGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10865,7 +10865,7 @@
 
 func (c *OnboardingListCategoriesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11040,7 +11040,7 @@
 
 func (c *OnboardingListCategoryVolumesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11252,7 +11252,7 @@
 
 func (c *PersonalizedstreamGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11442,7 +11442,7 @@
 
 func (c *PromoofferAcceptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11610,7 +11610,7 @@
 
 func (c *PromoofferDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11779,7 +11779,7 @@
 
 func (c *PromoofferGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11938,7 +11938,7 @@
 
 func (c *SeriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12091,7 +12091,7 @@
 
 func (c *SeriesMembershipGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12288,7 +12288,7 @@
 
 func (c *VolumesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12588,7 +12588,7 @@
 
 func (c *VolumesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12899,7 +12899,7 @@
 
 func (c *VolumesAssociatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13143,7 +13143,7 @@
 
 func (c *VolumesMybooksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13371,7 +13371,7 @@
 
 func (c *VolumesRecommendedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13528,7 +13528,7 @@
 
 func (c *VolumesRecommendedRateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13737,7 +13737,7 @@
 
 func (c *VolumesUseruploadedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/calendar/v3/calendar-gen.go b/calendar/v3/calendar-gen.go
index 41e0ff9..9e40318 100644
--- a/calendar/v3/calendar-gen.go
+++ b/calendar/v3/calendar-gen.go
@@ -2428,7 +2428,7 @@
 
 func (c *AclDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2549,7 +2549,7 @@
 
 func (c *AclGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2699,7 +2699,7 @@
 
 func (c *AclInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2891,7 +2891,7 @@
 
 func (c *AclListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3080,7 +3080,7 @@
 
 func (c *AclPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3242,7 +3242,7 @@
 
 func (c *AclUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3433,7 +3433,7 @@
 
 func (c *AclWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3593,7 +3593,7 @@
 
 func (c *CalendarListDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3704,7 +3704,7 @@
 
 func (c *CalendarListGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3846,7 +3846,7 @@
 
 func (c *CalendarListInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4049,7 +4049,7 @@
 
 func (c *CalendarListListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4248,7 +4248,7 @@
 
 func (c *CalendarListPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4401,7 +4401,7 @@
 
 func (c *CalendarListUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4607,7 +4607,7 @@
 
 func (c *CalendarListWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4779,7 +4779,7 @@
 
 func (c *CalendarsClearCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4880,7 +4880,7 @@
 
 func (c *CalendarsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4991,7 +4991,7 @@
 
 func (c *CalendarsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5123,7 +5123,7 @@
 
 func (c *CalendarsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5248,7 +5248,7 @@
 
 func (c *CalendarsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5386,7 +5386,7 @@
 
 func (c *CalendarsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5522,7 +5522,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5630,7 +5630,7 @@
 
 func (c *ColorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5776,7 +5776,7 @@
 
 func (c *EventsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5946,7 +5946,7 @@
 
 func (c *EventsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6128,7 +6128,7 @@
 
 func (c *EventsImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6336,7 +6336,7 @@
 
 func (c *EventsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6603,7 +6603,7 @@
 
 func (c *EventsInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7013,7 +7013,7 @@
 
 func (c *EventsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7303,7 +7303,7 @@
 
 func (c *EventsMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7539,7 +7539,7 @@
 
 func (c *EventsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7756,7 +7756,7 @@
 
 func (c *EventsQuickAddCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7984,7 +7984,7 @@
 
 func (c *EventsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8360,7 +8360,7 @@
 
 func (c *EventsWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8604,7 +8604,7 @@
 
 func (c *FreebusyQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8738,7 +8738,7 @@
 
 func (c *SettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8909,7 +8909,7 @@
 
 func (c *SettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9098,7 +9098,7 @@
 
 func (c *SettingsWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/chat/v1/chat-gen.go b/chat/v1/chat-gen.go
index a404fca..e2397d6 100644
--- a/chat/v1/chat-gen.go
+++ b/chat/v1/chat-gen.go
@@ -1413,7 +1413,7 @@
 
 func (c *SpacesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1568,7 +1568,7 @@
 
 func (c *SpacesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1729,7 +1729,7 @@
 
 func (c *SpacesMembersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1886,7 +1886,7 @@
 
 func (c *SpacesMembersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2069,7 +2069,7 @@
 
 func (c *SpacesMessagesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2209,7 +2209,7 @@
 
 func (c *SpacesMessagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2347,7 +2347,7 @@
 
 func (c *SpacesMessagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2488,7 +2488,7 @@
 
 func (c *SpacesMessagesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/civicinfo/v2/civicinfo-gen.go b/civicinfo/v2/civicinfo-gen.go
index 624c652..11da948 100644
--- a/civicinfo/v2/civicinfo-gen.go
+++ b/civicinfo/v2/civicinfo-gen.go
@@ -1976,7 +1976,7 @@
 
 func (c *DivisionsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2111,7 +2111,7 @@
 
 func (c *ElectionsElectionQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2269,7 +2269,7 @@
 
 func (c *ElectionsVoterInfoQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2485,7 +2485,7 @@
 
 func (c *RepresentativesRepresentativeInfoByAddressCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2741,7 +2741,7 @@
 
 func (c *RepresentativesRepresentativeInfoByDivisionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/classroom/v1/classroom-gen.go b/classroom/v1/classroom-gen.go
index e449efe..670b3f5 100644
--- a/classroom/v1/classroom-gen.go
+++ b/classroom/v1/classroom-gen.go
@@ -3369,7 +3369,7 @@
 
 func (c *CoursesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3501,7 +3501,7 @@
 
 func (c *CoursesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3648,7 +3648,7 @@
 
 func (c *CoursesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3865,7 +3865,7 @@
 
 func (c *CoursesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4086,7 +4086,7 @@
 
 func (c *CoursesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4240,7 +4240,7 @@
 
 func (c *CoursesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4391,7 +4391,7 @@
 
 func (c *CoursesAliasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4541,7 +4541,7 @@
 
 func (c *CoursesAliasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4720,7 +4720,7 @@
 
 func (c *CoursesAliasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4899,7 +4899,7 @@
 
 func (c *CoursesAnnouncementsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5056,7 +5056,7 @@
 
 func (c *CoursesAnnouncementsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5214,7 +5214,7 @@
 
 func (c *CoursesAnnouncementsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5431,7 +5431,7 @@
 
 func (c *CoursesAnnouncementsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5629,7 +5629,7 @@
 
 func (c *CoursesAnnouncementsModifyAssigneesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5813,7 +5813,7 @@
 
 func (c *CoursesAnnouncementsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5989,7 +5989,7 @@
 
 func (c *CoursesCourseWorkCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6146,7 +6146,7 @@
 
 func (c *CoursesCourseWorkDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6304,7 +6304,7 @@
 
 func (c *CoursesCourseWorkGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6525,7 +6525,7 @@
 
 func (c *CoursesCourseWorkListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6725,7 +6725,7 @@
 
 func (c *CoursesCourseWorkModifyAssigneesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6929,7 +6929,7 @@
 
 func (c *CoursesCourseWorkPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7104,7 +7104,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7354,7 +7354,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7590,7 +7590,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsModifyAttachmentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7787,7 +7787,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7983,7 +7983,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsReclaimCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8171,7 +8171,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsReturnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8356,7 +8356,7 @@
 
 func (c *CoursesCourseWorkStudentSubmissionsTurnInCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8538,7 +8538,7 @@
 
 func (c *CoursesStudentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8693,7 +8693,7 @@
 
 func (c *CoursesStudentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8852,7 +8852,7 @@
 
 func (c *CoursesStudentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9034,7 +9034,7 @@
 
 func (c *CoursesStudentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9220,7 +9220,7 @@
 
 func (c *CoursesTeachersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9373,7 +9373,7 @@
 
 func (c *CoursesTeachersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9532,7 +9532,7 @@
 
 func (c *CoursesTeachersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9714,7 +9714,7 @@
 
 func (c *CoursesTeachersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9892,7 +9892,7 @@
 
 func (c *CoursesTopicsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10041,7 +10041,7 @@
 
 func (c *CoursesTopicsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10199,7 +10199,7 @@
 
 func (c *CoursesTopicsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10384,7 +10384,7 @@
 
 func (c *CoursesTopicsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10583,7 +10583,7 @@
 
 func (c *CoursesTopicsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10750,7 +10750,7 @@
 
 func (c *InvitationsAcceptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10894,7 +10894,7 @@
 
 func (c *InvitationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11026,7 +11026,7 @@
 
 func (c *InvitationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11173,7 +11173,7 @@
 
 func (c *InvitationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11367,7 +11367,7 @@
 
 func (c *InvitationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11571,7 +11571,7 @@
 
 func (c *RegistrationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11698,7 +11698,7 @@
 
 func (c *RegistrationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11846,7 +11846,7 @@
 
 func (c *UserProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12028,7 +12028,7 @@
 
 func (c *UserProfilesGuardianInvitationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12197,7 +12197,7 @@
 
 func (c *UserProfilesGuardianInvitationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12419,7 +12419,7 @@
 
 func (c *UserProfilesGuardianInvitationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12646,7 +12646,7 @@
 
 func (c *UserProfilesGuardianInvitationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12823,7 +12823,7 @@
 
 func (c *UserProfilesGuardiansDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12994,7 +12994,7 @@
 
 func (c *UserProfilesGuardiansGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13211,7 +13211,7 @@
 
 func (c *UserProfilesGuardiansListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudasset/v1/cloudasset-gen.go b/cloudasset/v1/cloudasset-gen.go
index c19c6bd..9525530 100644
--- a/cloudasset/v1/cloudasset-gen.go
+++ b/cloudasset/v1/cloudasset-gen.go
@@ -2153,7 +2153,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2362,7 +2362,7 @@
 
 func (c *V1BatchGetAssetsHistoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2532,7 +2532,7 @@
 
 func (c *V1ExportAssetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudasset/v1beta1/cloudasset-gen.go b/cloudasset/v1beta1/cloudasset-gen.go
index a23cee8..3f047f5 100644
--- a/cloudasset/v1beta1/cloudasset-gen.go
+++ b/cloudasset/v1beta1/cloudasset-gen.go
@@ -1175,7 +1175,7 @@
 
 func (c *FoldersExportAssetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1328,7 +1328,7 @@
 
 func (c *FoldersOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1531,7 +1531,7 @@
 
 func (c *OrganizationsBatchGetAssetsHistoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1699,7 +1699,7 @@
 
 func (c *OrganizationsExportAssetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1852,7 +1852,7 @@
 
 func (c *OrganizationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2055,7 +2055,7 @@
 
 func (c *ProjectsBatchGetAssetsHistoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2223,7 +2223,7 @@
 
 func (c *ProjectsExportAssetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2376,7 +2376,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudbilling/v1/cloudbilling-gen.go b/cloudbilling/v1/cloudbilling-gen.go
index a79643b..061b39c 100644
--- a/cloudbilling/v1/cloudbilling-gen.go
+++ b/cloudbilling/v1/cloudbilling-gen.go
@@ -1539,7 +1539,7 @@
 
 func (c *BillingAccountsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1680,7 +1680,7 @@
 
 func (c *BillingAccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1849,7 +1849,7 @@
 
 func (c *BillingAccountsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2037,7 +2037,7 @@
 
 func (c *BillingAccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2213,7 +2213,7 @@
 
 func (c *BillingAccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2367,7 +2367,7 @@
 
 func (c *BillingAccountsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2511,7 +2511,7 @@
 
 func (c *BillingAccountsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2686,7 +2686,7 @@
 
 func (c *BillingAccountsProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2868,7 +2868,7 @@
 
 func (c *ProjectsGetBillingInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3058,7 +3058,7 @@
 
 func (c *ProjectsUpdateBillingInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3222,7 +3222,7 @@
 
 func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3444,7 +3444,7 @@
 
 func (c *ServicesSkusListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudbuild/v1/cloudbuild-gen.go b/cloudbuild/v1/cloudbuild-gen.go
index fdf27dc..81c754c 100644
--- a/cloudbuild/v1/cloudbuild-gen.go
+++ b/cloudbuild/v1/cloudbuild-gen.go
@@ -1870,7 +1870,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2023,7 +2023,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2204,7 +2204,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2378,7 +2378,7 @@
 
 func (c *ProjectsBuildsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2531,7 +2531,7 @@
 
 func (c *ProjectsBuildsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2685,7 +2685,7 @@
 
 func (c *ProjectsBuildsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2861,7 +2861,7 @@
 
 func (c *ProjectsBuildsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3071,7 +3071,7 @@
 
 func (c *ProjectsBuildsRetryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3220,7 +3220,7 @@
 
 func (c *ProjectsTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3362,7 +3362,7 @@
 
 func (c *ProjectsTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3514,7 +3514,7 @@
 
 func (c *ProjectsTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3681,7 +3681,7 @@
 
 func (c *ProjectsTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3852,7 +3852,7 @@
 
 func (c *ProjectsTriggersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4001,7 +4001,7 @@
 
 func (c *ProjectsTriggersRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudbuild/v1alpha1/cloudbuild-gen.go b/cloudbuild/v1alpha1/cloudbuild-gen.go
index 219324f..c0dcf42 100644
--- a/cloudbuild/v1alpha1/cloudbuild-gen.go
+++ b/cloudbuild/v1alpha1/cloudbuild-gen.go
@@ -1587,7 +1587,7 @@
 
 func (c *ProjectsWorkerPoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1728,7 +1728,7 @@
 
 func (c *ProjectsWorkerPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1871,7 +1871,7 @@
 
 func (c *ProjectsWorkerPoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2017,7 +2017,7 @@
 
 func (c *ProjectsWorkerPoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2154,7 +2154,7 @@
 
 func (c *ProjectsWorkerPoolsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/clouddebugger/v2/clouddebugger-gen.go b/clouddebugger/v2/clouddebugger-gen.go
index 5916311..eb92220 100644
--- a/clouddebugger/v2/clouddebugger-gen.go
+++ b/clouddebugger/v2/clouddebugger-gen.go
@@ -1592,7 +1592,7 @@
 
 func (c *ControllerDebuggeesRegisterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1776,7 +1776,7 @@
 
 func (c *ControllerDebuggeesBreakpointsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1935,7 +1935,7 @@
 
 func (c *ControllerDebuggeesBreakpointsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2114,7 +2114,7 @@
 
 func (c *DebuggerDebuggeesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2261,7 +2261,7 @@
 
 func (c *DebuggerDebuggeesBreakpointsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2425,7 +2425,7 @@
 
 func (c *DebuggerDebuggeesBreakpointsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2641,7 +2641,7 @@
 
 func (c *DebuggerDebuggeesBreakpointsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2818,7 +2818,7 @@
 
 func (c *DebuggerDebuggeesBreakpointsSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/clouderrorreporting/v1beta1/clouderrorreporting-gen.go b/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
index 0a3e001..2201e07 100644
--- a/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
+++ b/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
@@ -917,7 +917,7 @@
 
 func (c *ProjectsDeleteEventsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1124,7 +1124,7 @@
 
 func (c *ProjectsEventsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1336,7 +1336,7 @@
 
 func (c *ProjectsEventsReportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1599,7 +1599,7 @@
 
 func (c *ProjectsGroupStatsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1843,7 +1843,7 @@
 
 func (c *ProjectsGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1979,7 +1979,7 @@
 
 func (c *ProjectsGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudfunctions/v1/cloudfunctions-gen.go b/cloudfunctions/v1/cloudfunctions-gen.go
index 7a6c535..f5e912e 100644
--- a/cloudfunctions/v1/cloudfunctions-gen.go
+++ b/cloudfunctions/v1/cloudfunctions-gen.go
@@ -1739,7 +1739,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1932,7 +1932,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2128,7 +2128,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2305,7 +2305,7 @@
 
 func (c *ProjectsLocationsFunctionsCallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2449,7 +2449,7 @@
 
 func (c *ProjectsLocationsFunctionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2591,7 +2591,7 @@
 
 func (c *ProjectsLocationsFunctionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2730,7 +2730,7 @@
 
 func (c *ProjectsLocationsFunctionsGenerateDownloadUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2902,7 +2902,7 @@
 
 func (c *ProjectsLocationsFunctionsGenerateUploadUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3052,7 +3052,7 @@
 
 func (c *ProjectsLocationsFunctionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3218,7 +3218,7 @@
 
 func (c *ProjectsLocationsFunctionsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3387,7 +3387,7 @@
 
 func (c *ProjectsLocationsFunctionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3561,7 +3561,7 @@
 
 func (c *ProjectsLocationsFunctionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3709,7 +3709,7 @@
 
 func (c *ProjectsLocationsFunctionsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3854,7 +3854,7 @@
 
 func (c *ProjectsLocationsFunctionsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudfunctions/v1beta2/cloudfunctions-gen.go b/cloudfunctions/v1beta2/cloudfunctions-gen.go
index ff57ebc..c6045b6 100644
--- a/cloudfunctions/v1beta2/cloudfunctions-gen.go
+++ b/cloudfunctions/v1beta2/cloudfunctions-gen.go
@@ -1214,7 +1214,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1407,7 +1407,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1603,7 +1603,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1781,7 +1781,7 @@
 
 func (c *ProjectsLocationsFunctionsCallCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1925,7 +1925,7 @@
 
 func (c *ProjectsLocationsFunctionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2067,7 +2067,7 @@
 
 func (c *ProjectsLocationsFunctionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2206,7 +2206,7 @@
 
 func (c *ProjectsLocationsFunctionsGenerateDownloadUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2378,7 +2378,7 @@
 
 func (c *ProjectsLocationsFunctionsGenerateUploadUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2528,7 +2528,7 @@
 
 func (c *ProjectsLocationsFunctionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2691,7 +2691,7 @@
 
 func (c *ProjectsLocationsFunctionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2858,7 +2858,7 @@
 
 func (c *ProjectsLocationsFunctionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudidentity/v1/cloudidentity-gen.go b/cloudidentity/v1/cloudidentity-gen.go
index b8ec2dc..1508de8 100644
--- a/cloudidentity/v1/cloudidentity-gen.go
+++ b/cloudidentity/v1/cloudidentity-gen.go
@@ -739,7 +739,7 @@
 
 func (c *GroupsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -865,7 +865,7 @@
 
 func (c *GroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1007,7 +1007,7 @@
 
 func (c *GroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1186,7 +1186,7 @@
 
 func (c *GroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1392,7 +1392,7 @@
 
 func (c *GroupsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1534,7 +1534,7 @@
 
 func (c *GroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1727,7 +1727,7 @@
 
 func (c *GroupsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1899,7 +1899,7 @@
 
 func (c *GroupsMembershipsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2038,7 +2038,7 @@
 
 func (c *GroupsMembershipsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2180,7 +2180,7 @@
 
 func (c *GroupsMembershipsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2353,7 +2353,7 @@
 
 func (c *GroupsMembershipsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2568,7 +2568,7 @@
 
 func (c *GroupsMembershipsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudidentity/v1beta1/cloudidentity-gen.go b/cloudidentity/v1beta1/cloudidentity-gen.go
index 4eb7bac..0908060 100644
--- a/cloudidentity/v1beta1/cloudidentity-gen.go
+++ b/cloudidentity/v1beta1/cloudidentity-gen.go
@@ -705,7 +705,7 @@
 
 func (c *GroupsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -831,7 +831,7 @@
 
 func (c *GroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -973,7 +973,7 @@
 
 func (c *GroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1144,7 +1144,7 @@
 
 func (c *GroupsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1286,7 +1286,7 @@
 
 func (c *GroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1483,7 +1483,7 @@
 
 func (c *GroupsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1654,7 +1654,7 @@
 
 func (c *GroupsMembershipsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1793,7 +1793,7 @@
 
 func (c *GroupsMembershipsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1935,7 +1935,7 @@
 
 func (c *GroupsMembershipsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2107,7 +2107,7 @@
 
 func (c *GroupsMembershipsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2321,7 +2321,7 @@
 
 func (c *GroupsMembershipsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudiot/v1/cloudiot-gen.go b/cloudiot/v1/cloudiot-gen.go
index 4eba881..25fbb3a 100644
--- a/cloudiot/v1/cloudiot-gen.go
+++ b/cloudiot/v1/cloudiot-gen.go
@@ -1966,7 +1966,7 @@
 
 func (c *ProjectsLocationsRegistriesBindDeviceToGatewayCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2107,7 +2107,7 @@
 
 func (c *ProjectsLocationsRegistriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2246,7 +2246,7 @@
 
 func (c *ProjectsLocationsRegistriesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2388,7 +2388,7 @@
 
 func (c *ProjectsLocationsRegistriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2527,7 +2527,7 @@
 
 func (c *ProjectsLocationsRegistriesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2699,7 +2699,7 @@
 
 func (c *ProjectsLocationsRegistriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2880,7 +2880,7 @@
 
 func (c *ProjectsLocationsRegistriesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3029,7 +3029,7 @@
 
 func (c *ProjectsLocationsRegistriesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3174,7 +3174,7 @@
 
 func (c *ProjectsLocationsRegistriesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3316,7 +3316,7 @@
 
 func (c *ProjectsLocationsRegistriesUnbindDeviceFromGatewayCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3457,7 +3457,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3596,7 +3596,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3746,7 +3746,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3989,7 +3989,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4200,7 +4200,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesModifyCloudToDeviceConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4352,7 +4352,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4519,7 +4519,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesSendCommandToDeviceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4681,7 +4681,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesConfigVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4844,7 +4844,7 @@
 
 func (c *ProjectsLocationsRegistriesDevicesStatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4989,7 +4989,7 @@
 
 func (c *ProjectsLocationsRegistriesGroupsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5132,7 +5132,7 @@
 
 func (c *ProjectsLocationsRegistriesGroupsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5277,7 +5277,7 @@
 
 func (c *ProjectsLocationsRegistriesGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5519,7 +5519,7 @@
 
 func (c *ProjectsLocationsRegistriesGroupsDevicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudkms/v1/cloudkms-gen.go b/cloudkms/v1/cloudkms-gen.go
index 28037f8..a3617f7 100644
--- a/cloudkms/v1/cloudkms-gen.go
+++ b/cloudkms/v1/cloudkms-gen.go
@@ -2307,7 +2307,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2474,7 +2474,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2655,7 +2655,7 @@
 
 func (c *ProjectsLocationsKeyRingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2810,7 +2810,7 @@
 
 func (c *ProjectsLocationsKeyRingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2976,7 +2976,7 @@
 
 func (c *ProjectsLocationsKeyRingsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3173,7 +3173,7 @@
 
 func (c *ProjectsLocationsKeyRingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3356,7 +3356,7 @@
 
 func (c *ProjectsLocationsKeyRingsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3507,7 +3507,7 @@
 
 func (c *ProjectsLocationsKeyRingsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3672,7 +3672,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3825,7 +3825,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysDecryptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3969,7 +3969,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysEncryptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4120,7 +4120,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4286,7 +4286,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4495,7 +4495,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4689,7 +4689,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4841,7 +4841,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4992,7 +4992,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5136,7 +5136,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysUpdatePrimaryVersionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5281,7 +5281,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsAsymmetricDecryptCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5426,7 +5426,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsAsymmetricSignCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5571,7 +5571,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5724,7 +5724,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsDestroyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5874,7 +5874,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6023,7 +6023,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsGetPublicKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6165,7 +6165,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6373,7 +6373,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6574,7 +6574,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6728,7 +6728,7 @@
 
 func (c *ProjectsLocationsKeyRingsCryptoKeysCryptoKeyVersionsRestoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6880,7 +6880,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7035,7 +7035,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7201,7 +7201,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7398,7 +7398,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7581,7 +7581,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7732,7 +7732,7 @@
 
 func (c *ProjectsLocationsKeyRingsImportJobsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudprivatecatalog/v1beta1/cloudprivatecatalog-gen.go b/cloudprivatecatalog/v1beta1/cloudprivatecatalog-gen.go
index 70da7d4..8200980 100644
--- a/cloudprivatecatalog/v1beta1/cloudprivatecatalog-gen.go
+++ b/cloudprivatecatalog/v1beta1/cloudprivatecatalog-gen.go
@@ -735,7 +735,7 @@
 
 func (c *FoldersCatalogsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -951,7 +951,7 @@
 
 func (c *FoldersProductsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1169,7 +1169,7 @@
 
 func (c *FoldersVersionsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1380,7 +1380,7 @@
 
 func (c *OrganizationsCatalogsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1596,7 +1596,7 @@
 
 func (c *OrganizationsProductsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1814,7 +1814,7 @@
 
 func (c *OrganizationsVersionsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2025,7 +2025,7 @@
 
 func (c *ProjectsCatalogsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2241,7 +2241,7 @@
 
 func (c *ProjectsProductsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2459,7 +2459,7 @@
 
 func (c *ProjectsVersionsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
index 0d2c410..4d849d8 100644
--- a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
+++ b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
@@ -1654,7 +1654,7 @@
 
 func (c *CatalogsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1795,7 +1795,7 @@
 
 func (c *CatalogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1943,7 +1943,7 @@
 
 func (c *CatalogsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2107,7 +2107,7 @@
 
 func (c *CatalogsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2280,7 +2280,7 @@
 
 func (c *CatalogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2450,7 +2450,7 @@
 
 func (c *CatalogsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2598,7 +2598,7 @@
 
 func (c *CatalogsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2739,7 +2739,7 @@
 
 func (c *CatalogsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2880,7 +2880,7 @@
 
 func (c *CatalogsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3022,7 +3022,7 @@
 
 func (c *CatalogsAssociationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3162,7 +3162,7 @@
 
 func (c *CatalogsAssociationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3303,7 +3303,7 @@
 
 func (c *CatalogsAssociationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3464,7 +3464,7 @@
 
 func (c *CatalogsAssociationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3634,7 +3634,7 @@
 
 func (c *CatalogsProductsCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3774,7 +3774,7 @@
 
 func (c *CatalogsProductsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3914,7 +3914,7 @@
 
 func (c *CatalogsProductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4055,7 +4055,7 @@
 
 func (c *CatalogsProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4227,7 +4227,7 @@
 
 func (c *CatalogsProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4409,7 +4409,7 @@
 
 func (c *CatalogsProductsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4562,7 +4562,7 @@
 
 func (c *CatalogsProductsIconsUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4702,7 +4702,7 @@
 
 func (c *CatalogsProductsVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4840,7 +4840,7 @@
 
 func (c *CatalogsProductsVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4981,7 +4981,7 @@
 
 func (c *CatalogsProductsVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5145,7 +5145,7 @@
 
 func (c *CatalogsProductsVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5322,7 +5322,7 @@
 
 func (c *CatalogsProductsVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5487,7 +5487,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5631,7 +5631,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5776,7 +5776,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5962,7 +5962,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudprofiler/v2/cloudprofiler-gen.go b/cloudprofiler/v2/cloudprofiler-gen.go
index 3c382db..cc09e75 100644
--- a/cloudprofiler/v2/cloudprofiler-gen.go
+++ b/cloudprofiler/v2/cloudprofiler-gen.go
@@ -442,7 +442,7 @@
 
 func (c *ProjectsProfilesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -588,7 +588,7 @@
 
 func (c *ProjectsProfilesCreateOfflineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -748,7 +748,7 @@
 
 func (c *ProjectsProfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
index eb46d6a..caf2b6c 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
@@ -2588,7 +2588,7 @@
 
 func (c *FoldersClearOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2736,7 +2736,7 @@
 
 func (c *FoldersGetEffectiveOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2885,7 +2885,7 @@
 
 func (c *FoldersGetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3027,7 +3027,7 @@
 
 func (c *FoldersListAvailableOrgPolicyConstraintsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3192,7 +3192,7 @@
 
 func (c *FoldersListOrgPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3360,7 +3360,7 @@
 
 func (c *FoldersSetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3508,7 +3508,7 @@
 
 func (c *LiensCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3640,7 +3640,7 @@
 
 func (c *LiensDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3790,7 +3790,7 @@
 
 func (c *LiensGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3962,7 +3962,7 @@
 
 func (c *LiensListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4136,7 +4136,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4272,7 +4272,7 @@
 
 func (c *OrganizationsClearOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4422,7 +4422,7 @@
 
 func (c *OrganizationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4566,7 +4566,7 @@
 
 func (c *OrganizationsGetEffectiveOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4717,7 +4717,7 @@
 
 func (c *OrganizationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4866,7 +4866,7 @@
 
 func (c *OrganizationsGetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5008,7 +5008,7 @@
 
 func (c *OrganizationsListAvailableOrgPolicyConstraintsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5173,7 +5173,7 @@
 
 func (c *OrganizationsListOrgPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5343,7 +5343,7 @@
 
 func (c *OrganizationsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5501,7 +5501,7 @@
 
 func (c *OrganizationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5647,7 +5647,7 @@
 
 func (c *OrganizationsSetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5792,7 +5792,7 @@
 
 func (c *OrganizationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5933,7 +5933,7 @@
 
 func (c *ProjectsClearOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6095,7 +6095,7 @@
 
 func (c *ProjectsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6242,7 +6242,7 @@
 
 func (c *ProjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6385,7 +6385,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6525,7 +6525,7 @@
 
 func (c *ProjectsGetAncestryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6673,7 +6673,7 @@
 
 func (c *ProjectsGetEffectiveOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6825,7 +6825,7 @@
 
 func (c *ProjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6973,7 +6973,7 @@
 
 func (c *ProjectsGetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7215,7 +7215,7 @@
 
 func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7377,7 +7377,7 @@
 
 func (c *ProjectsListAvailableOrgPolicyConstraintsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7542,7 +7542,7 @@
 
 func (c *ProjectsListOrgPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7777,7 +7777,7 @@
 
 func (c *ProjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7922,7 +7922,7 @@
 
 func (c *ProjectsSetOrgPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8065,7 +8065,7 @@
 
 func (c *ProjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8213,7 +8213,7 @@
 
 func (c *ProjectsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8356,7 +8356,7 @@
 
 func (c *ProjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
index 062a8f4..f6ecdac 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
@@ -1447,7 +1447,7 @@
 
 func (c *OrganizationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1592,7 +1592,7 @@
 
 func (c *OrganizationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1784,7 +1784,7 @@
 
 func (c *OrganizationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1949,7 +1949,7 @@
 
 func (c *OrganizationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2092,7 +2092,7 @@
 
 func (c *OrganizationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2234,7 +2234,7 @@
 
 func (c *OrganizationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2402,7 +2402,7 @@
 
 func (c *ProjectsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2557,7 +2557,7 @@
 
 func (c *ProjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2700,7 +2700,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2840,7 +2840,7 @@
 
 func (c *ProjectsGetAncestryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2987,7 +2987,7 @@
 
 func (c *ProjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3228,7 +3228,7 @@
 
 func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3453,7 +3453,7 @@
 
 func (c *ProjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3593,7 +3593,7 @@
 
 func (c *ProjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3741,7 +3741,7 @@
 
 func (c *ProjectsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3884,7 +3884,7 @@
 
 func (c *ProjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-gen.go b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
index b91728f..c4e9d92 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
@@ -1387,7 +1387,7 @@
 
 func (c *FoldersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1529,7 +1529,7 @@
 
 func (c *FoldersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1677,7 +1677,7 @@
 
 func (c *FoldersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1820,7 +1820,7 @@
 
 func (c *FoldersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2015,7 +2015,7 @@
 
 func (c *FoldersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2206,7 +2206,7 @@
 
 func (c *FoldersMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2375,7 +2375,7 @@
 
 func (c *FoldersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2526,7 +2526,7 @@
 
 func (c *FoldersSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2682,7 +2682,7 @@
 
 func (c *FoldersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2827,7 +2827,7 @@
 
 func (c *FoldersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2980,7 +2980,7 @@
 
 func (c *FoldersUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3133,7 +3133,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
index 8b28061..79b4e11 100644
--- a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
@@ -1387,7 +1387,7 @@
 
 func (c *FoldersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1529,7 +1529,7 @@
 
 func (c *FoldersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1677,7 +1677,7 @@
 
 func (c *FoldersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1820,7 +1820,7 @@
 
 func (c *FoldersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2015,7 +2015,7 @@
 
 func (c *FoldersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2206,7 +2206,7 @@
 
 func (c *FoldersMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2375,7 +2375,7 @@
 
 func (c *FoldersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2526,7 +2526,7 @@
 
 func (c *FoldersSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2682,7 +2682,7 @@
 
 func (c *FoldersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2827,7 +2827,7 @@
 
 func (c *FoldersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2980,7 +2980,7 @@
 
 func (c *FoldersUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3133,7 +3133,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudscheduler/v1/cloudscheduler-gen.go b/cloudscheduler/v1/cloudscheduler-gen.go
index ad10319..c3953f0 100644
--- a/cloudscheduler/v1/cloudscheduler-gen.go
+++ b/cloudscheduler/v1/cloudscheduler-gen.go
@@ -1293,7 +1293,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1459,7 +1459,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1631,7 +1631,7 @@
 
 func (c *ProjectsLocationsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1769,7 +1769,7 @@
 
 func (c *ProjectsLocationsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1910,7 +1910,7 @@
 
 func (c *ProjectsLocationsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2081,7 +2081,7 @@
 
 func (c *ProjectsLocationsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2264,7 +2264,7 @@
 
 func (c *ProjectsLocationsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2417,7 +2417,7 @@
 
 func (c *ProjectsLocationsJobsPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2564,7 +2564,7 @@
 
 func (c *ProjectsLocationsJobsResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2708,7 +2708,7 @@
 
 func (c *ProjectsLocationsJobsRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudscheduler/v1beta1/cloudscheduler-gen.go b/cloudscheduler/v1beta1/cloudscheduler-gen.go
index 89b78d0..ba64b43 100644
--- a/cloudscheduler/v1beta1/cloudscheduler-gen.go
+++ b/cloudscheduler/v1beta1/cloudscheduler-gen.go
@@ -1295,7 +1295,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1461,7 +1461,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1633,7 +1633,7 @@
 
 func (c *ProjectsLocationsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1771,7 +1771,7 @@
 
 func (c *ProjectsLocationsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1912,7 +1912,7 @@
 
 func (c *ProjectsLocationsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2083,7 +2083,7 @@
 
 func (c *ProjectsLocationsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2266,7 +2266,7 @@
 
 func (c *ProjectsLocationsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2419,7 +2419,7 @@
 
 func (c *ProjectsLocationsJobsPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2566,7 +2566,7 @@
 
 func (c *ProjectsLocationsJobsResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2710,7 +2710,7 @@
 
 func (c *ProjectsLocationsJobsRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go
index 69dca4e..e8cf8ed 100644
--- a/cloudsearch/v1/cloudsearch-gen.go
+++ b/cloudsearch/v1/cloudsearch-gen.go
@@ -7218,7 +7218,7 @@
 
 func (c *DebugDatasourcesItemsCheckAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7366,7 +7366,7 @@
 
 func (c *DebugDatasourcesItemsSearchByViewUrlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7561,7 +7561,7 @@
 
 func (c *DebugDatasourcesItemsUnmappedidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7780,7 +7780,7 @@
 
 func (c *DebugIdentitysourcesItemsListForunmappedidentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8011,7 +8011,7 @@
 
 func (c *DebugIdentitysourcesUnmappedidsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8204,7 +8204,7 @@
 
 func (c *IndexingDatasourcesDeleteSchemaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8361,7 +8361,7 @@
 
 func (c *IndexingDatasourcesGetSchemaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8503,7 +8503,7 @@
 
 func (c *IndexingDatasourcesUpdateSchemaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8692,7 +8692,7 @@
 
 func (c *IndexingDatasourcesItemsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8857,7 +8857,7 @@
 
 func (c *IndexingDatasourcesItemsDeleteQueueItemsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9028,7 +9028,7 @@
 
 func (c *IndexingDatasourcesItemsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9183,7 +9183,7 @@
 
 func (c *IndexingDatasourcesItemsIndexCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9403,7 +9403,7 @@
 
 func (c *IndexingDatasourcesItemsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9617,7 +9617,7 @@
 
 func (c *IndexingDatasourcesItemsPollCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9763,7 +9763,7 @@
 
 func (c *IndexingDatasourcesItemsPushCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9911,7 +9911,7 @@
 
 func (c *IndexingDatasourcesItemsUnreserveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10060,7 +10060,7 @@
 
 func (c *IndexingDatasourcesItemsUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10269,7 +10269,7 @@
 
 func (c *MediaUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10463,7 +10463,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10607,7 +10607,7 @@
 
 func (c *QuerySearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10733,7 +10733,7 @@
 
 func (c *QuerySuggestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10937,7 +10937,7 @@
 
 func (c *QuerySourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11105,7 +11105,7 @@
 
 func (c *SettingsDatasourcesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11241,7 +11241,7 @@
 
 func (c *SettingsDatasourcesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11398,7 +11398,7 @@
 
 func (c *SettingsDatasourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11572,7 +11572,7 @@
 
 func (c *SettingsDatasourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11734,7 +11734,7 @@
 
 func (c *SettingsDatasourcesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11874,7 +11874,7 @@
 
 func (c *SettingsSearchapplicationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12010,7 +12010,7 @@
 
 func (c *SettingsSearchapplicationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12167,7 +12167,7 @@
 
 func (c *SettingsSearchapplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12341,7 +12341,7 @@
 
 func (c *SettingsSearchapplicationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12505,7 +12505,7 @@
 
 func (c *SettingsSearchapplicationsResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12647,7 +12647,7 @@
 
 func (c *SettingsSearchapplicationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12842,7 +12842,7 @@
 
 func (c *StatsGetIndexCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13052,7 +13052,7 @@
 
 func (c *StatsGetQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13262,7 +13262,7 @@
 
 func (c *StatsGetSessionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13472,7 +13472,7 @@
 
 func (c *StatsGetUserCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13684,7 +13684,7 @@
 
 func (c *StatsIndexDatasourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13908,7 +13908,7 @@
 
 func (c *StatsQuerySearchapplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14133,7 +14133,7 @@
 
 func (c *StatsSessionSearchapplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14359,7 +14359,7 @@
 
 func (c *StatsUserSearchapplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudshell/v1/cloudshell-gen.go b/cloudshell/v1/cloudshell-gen.go
index 043dfc2..901ce3f 100644
--- a/cloudshell/v1/cloudshell-gen.go
+++ b/cloudshell/v1/cloudshell-gen.go
@@ -643,7 +643,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -787,7 +787,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -932,7 +932,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1113,7 +1113,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudshell/v1alpha1/cloudshell-gen.go b/cloudshell/v1alpha1/cloudshell-gen.go
index 890d261..aefa10c 100644
--- a/cloudshell/v1alpha1/cloudshell-gen.go
+++ b/cloudshell/v1alpha1/cloudshell-gen.go
@@ -722,7 +722,7 @@
 
 func (c *UsersEnvironmentsAuthorizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -872,7 +872,7 @@
 
 func (c *UsersEnvironmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1014,7 +1014,7 @@
 
 func (c *UsersEnvironmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1170,7 +1170,7 @@
 
 func (c *UsersEnvironmentsStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1316,7 +1316,7 @@
 
 func (c *UsersEnvironmentsPublicKeysCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1457,7 +1457,7 @@
 
 func (c *UsersEnvironmentsPublicKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudtasks/v2/cloudtasks-gen.go b/cloudtasks/v2/cloudtasks-gen.go
index ee186fb..eb0c72e 100644
--- a/cloudtasks/v2/cloudtasks-gen.go
+++ b/cloudtasks/v2/cloudtasks-gen.go
@@ -2144,7 +2144,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2310,7 +2310,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2499,7 +2499,7 @@
 
 func (c *ProjectsLocationsQueuesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2654,7 +2654,7 @@
 
 func (c *ProjectsLocationsQueuesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2795,7 +2795,7 @@
 
 func (c *ProjectsLocationsQueuesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2940,7 +2940,7 @@
 
 func (c *ProjectsLocationsQueuesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3140,7 +3140,7 @@
 
 func (c *ProjectsLocationsQueuesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3341,7 +3341,7 @@
 
 func (c *ProjectsLocationsQueuesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3494,7 +3494,7 @@
 
 func (c *ProjectsLocationsQueuesPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3642,7 +3642,7 @@
 
 func (c *ProjectsLocationsQueuesPurgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3796,7 +3796,7 @@
 
 func (c *ProjectsLocationsQueuesResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3950,7 +3950,7 @@
 
 func (c *ProjectsLocationsQueuesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4100,7 +4100,7 @@
 
 func (c *ProjectsLocationsQueuesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4245,7 +4245,7 @@
 
 func (c *ProjectsLocationsQueuesTasksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4388,7 +4388,7 @@
 
 func (c *ProjectsLocationsQueuesTasksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4556,7 +4556,7 @@
 
 func (c *ProjectsLocationsQueuesTasksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4779,7 +4779,7 @@
 
 func (c *ProjectsLocationsQueuesTasksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4984,7 +4984,7 @@
 
 func (c *ProjectsLocationsQueuesTasksRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudtasks/v2beta2/cloudtasks-gen.go b/cloudtasks/v2beta2/cloudtasks-gen.go
index 46da219..268d85d 100644
--- a/cloudtasks/v2beta2/cloudtasks-gen.go
+++ b/cloudtasks/v2beta2/cloudtasks-gen.go
@@ -2665,7 +2665,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2831,7 +2831,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3020,7 +3020,7 @@
 
 func (c *ProjectsLocationsQueuesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3175,7 +3175,7 @@
 
 func (c *ProjectsLocationsQueuesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3316,7 +3316,7 @@
 
 func (c *ProjectsLocationsQueuesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3461,7 +3461,7 @@
 
 func (c *ProjectsLocationsQueuesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3662,7 +3662,7 @@
 
 func (c *ProjectsLocationsQueuesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3863,7 +3863,7 @@
 
 func (c *ProjectsLocationsQueuesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4016,7 +4016,7 @@
 
 func (c *ProjectsLocationsQueuesPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4164,7 +4164,7 @@
 
 func (c *ProjectsLocationsQueuesPurgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4318,7 +4318,7 @@
 
 func (c *ProjectsLocationsQueuesResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4472,7 +4472,7 @@
 
 func (c *ProjectsLocationsQueuesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4622,7 +4622,7 @@
 
 func (c *ProjectsLocationsQueuesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4774,7 +4774,7 @@
 
 func (c *ProjectsLocationsQueuesTasksAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4920,7 +4920,7 @@
 
 func (c *ProjectsLocationsQueuesTasksCancelLeaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5067,7 +5067,7 @@
 
 func (c *ProjectsLocationsQueuesTasksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5210,7 +5210,7 @@
 
 func (c *ProjectsLocationsQueuesTasksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5378,7 +5378,7 @@
 
 func (c *ProjectsLocationsQueuesTasksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5545,7 +5545,7 @@
 
 func (c *ProjectsLocationsQueuesTasksLeaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5763,7 +5763,7 @@
 
 func (c *ProjectsLocationsQueuesTasksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5944,7 +5944,7 @@
 
 func (c *ProjectsLocationsQueuesTasksRenewLeaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6115,7 +6115,7 @@
 
 func (c *ProjectsLocationsQueuesTasksRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudtasks/v2beta3/cloudtasks-gen.go b/cloudtasks/v2beta3/cloudtasks-gen.go
index 8c8346c..e982ba8 100644
--- a/cloudtasks/v2beta3/cloudtasks-gen.go
+++ b/cloudtasks/v2beta3/cloudtasks-gen.go
@@ -2505,7 +2505,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2671,7 +2671,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2860,7 +2860,7 @@
 
 func (c *ProjectsLocationsQueuesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3015,7 +3015,7 @@
 
 func (c *ProjectsLocationsQueuesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3156,7 +3156,7 @@
 
 func (c *ProjectsLocationsQueuesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3301,7 +3301,7 @@
 
 func (c *ProjectsLocationsQueuesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3501,7 +3501,7 @@
 
 func (c *ProjectsLocationsQueuesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3702,7 +3702,7 @@
 
 func (c *ProjectsLocationsQueuesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3855,7 +3855,7 @@
 
 func (c *ProjectsLocationsQueuesPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4003,7 +4003,7 @@
 
 func (c *ProjectsLocationsQueuesPurgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4157,7 +4157,7 @@
 
 func (c *ProjectsLocationsQueuesResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4311,7 +4311,7 @@
 
 func (c *ProjectsLocationsQueuesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4461,7 +4461,7 @@
 
 func (c *ProjectsLocationsQueuesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4606,7 +4606,7 @@
 
 func (c *ProjectsLocationsQueuesTasksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4749,7 +4749,7 @@
 
 func (c *ProjectsLocationsQueuesTasksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4917,7 +4917,7 @@
 
 func (c *ProjectsLocationsQueuesTasksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5140,7 +5140,7 @@
 
 func (c *ProjectsLocationsQueuesTasksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5345,7 +5345,7 @@
 
 func (c *ProjectsLocationsQueuesTasksRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudtrace/v1/cloudtrace-gen.go b/cloudtrace/v1/cloudtrace-gen.go
index dbb7e4d..c6c42b1 100644
--- a/cloudtrace/v1/cloudtrace-gen.go
+++ b/cloudtrace/v1/cloudtrace-gen.go
@@ -465,7 +465,7 @@
 
 func (c *ProjectsPatchTracesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -616,7 +616,7 @@
 
 func (c *ProjectsTracesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -883,7 +883,7 @@
 
 func (c *ProjectsTracesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/cloudtrace/v2/cloudtrace-gen.go b/cloudtrace/v2/cloudtrace-gen.go
index 67a99b0..8c50454 100644
--- a/cloudtrace/v2/cloudtrace-gen.go
+++ b/cloudtrace/v2/cloudtrace-gen.go
@@ -1022,7 +1022,7 @@
 
 func (c *ProjectsTracesBatchWriteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1163,7 +1163,7 @@
 
 func (c *ProjectsTracesSpansCreateSpanCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/commentanalyzer/v1alpha1/commentanalyzer-gen.go b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
index fc865e3..9d8a243 100644
--- a/commentanalyzer/v1alpha1/commentanalyzer-gen.go
+++ b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
@@ -813,7 +813,7 @@
 
 func (c *CommentsAnalyzeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -938,7 +938,7 @@
 
 func (c *CommentsSuggestscoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/composer/v1/composer-gen.go b/composer/v1/composer-gen.go
index b35fa90..b021fd4 100644
--- a/composer/v1/composer-gen.go
+++ b/composer/v1/composer-gen.go
@@ -1025,7 +1025,7 @@
 
 func (c *ProjectsLocationsEnvironmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1163,7 +1163,7 @@
 
 func (c *ProjectsLocationsEnvironmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1304,7 +1304,7 @@
 
 func (c *ProjectsLocationsEnvironmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1462,7 +1462,7 @@
 
 func (c *ProjectsLocationsEnvironmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1800,7 +1800,7 @@
 
 func (c *ProjectsLocationsEnvironmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1969,7 +1969,7 @@
 
 func (c *ProjectsLocationsImageVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2140,7 +2140,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2285,7 +2285,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2466,7 +2466,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/composer/v1beta1/composer-gen.go b/composer/v1beta1/composer-gen.go
index beb85c9..ce8944f 100644
--- a/composer/v1beta1/composer-gen.go
+++ b/composer/v1beta1/composer-gen.go
@@ -1222,7 +1222,7 @@
 
 func (c *ProjectsLocationsEnvironmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1360,7 +1360,7 @@
 
 func (c *ProjectsLocationsEnvironmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1501,7 +1501,7 @@
 
 func (c *ProjectsLocationsEnvironmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1659,7 +1659,7 @@
 
 func (c *ProjectsLocationsEnvironmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2010,7 +2010,7 @@
 
 func (c *ProjectsLocationsEnvironmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2179,7 +2179,7 @@
 
 func (c *ProjectsLocationsImageVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2350,7 +2350,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2495,7 +2495,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2676,7 +2676,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/compute/v0.alpha/compute-gen.go b/compute/v0.alpha/compute-gen.go
index 2fae1a2..b28733f 100644
--- a/compute/v0.alpha/compute-gen.go
+++ b/compute/v0.alpha/compute-gen.go
@@ -47832,7 +47832,7 @@
 
 func (c *AcceleratorTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48026,7 +48026,7 @@
 
 func (c *AcceleratorTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48255,7 +48255,7 @@
 
 func (c *AcceleratorTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48518,7 +48518,7 @@
 
 func (c *AddressesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48721,7 +48721,7 @@
 
 func (c *AddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48891,7 +48891,7 @@
 
 func (c *AddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49069,7 +49069,7 @@
 
 func (c *AddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49299,7 +49299,7 @@
 
 func (c *AddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49513,7 +49513,7 @@
 
 func (c *AddressesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49681,7 +49681,7 @@
 
 func (c *AddressesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49913,7 +49913,7 @@
 
 func (c *AutoscalersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50115,7 +50115,7 @@
 
 func (c *AutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50285,7 +50285,7 @@
 
 func (c *AutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50461,7 +50461,7 @@
 
 func (c *AutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50690,7 +50690,7 @@
 
 func (c *AutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50910,7 +50910,7 @@
 
 func (c *AutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51075,7 +51075,7 @@
 
 func (c *AutoscalersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51263,7 +51263,7 @@
 
 func (c *AutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51445,7 +51445,7 @@
 
 func (c *BackendBucketsAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51618,7 +51618,7 @@
 
 func (c *BackendBucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51786,7 +51786,7 @@
 
 func (c *BackendBucketsDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51951,7 +51951,7 @@
 
 func (c *BackendBucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52116,7 +52116,7 @@
 
 func (c *BackendBucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52288,7 +52288,7 @@
 
 func (c *BackendBucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52506,7 +52506,7 @@
 
 func (c *BackendBucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52710,7 +52710,7 @@
 
 func (c *BackendBucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52868,7 +52868,7 @@
 
 func (c *BackendBucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53020,7 +53020,7 @@
 
 func (c *BackendBucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53192,7 +53192,7 @@
 
 func (c *BackendBucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53368,7 +53368,7 @@
 
 func (c *BackendServicesAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53595,7 +53595,7 @@
 
 func (c *BackendServicesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53796,7 +53796,7 @@
 
 func (c *BackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53964,7 +53964,7 @@
 
 func (c *BackendServicesDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54130,7 +54130,7 @@
 
 func (c *BackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54279,7 +54279,7 @@
 
 func (c *BackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54452,7 +54452,7 @@
 
 func (c *BackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54671,7 +54671,7 @@
 
 func (c *BackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54878,7 +54878,7 @@
 
 func (c *BackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55054,7 +55054,7 @@
 
 func (c *BackendServicesSetSecurityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55210,7 +55210,7 @@
 
 func (c *BackendServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55386,7 +55386,7 @@
 
 func (c *BackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55614,7 +55614,7 @@
 
 func (c *DiskTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55810,7 +55810,7 @@
 
 func (c *DiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56040,7 +56040,7 @@
 
 func (c *DiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56255,7 +56255,7 @@
 
 func (c *DisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56492,7 +56492,7 @@
 
 func (c *DisksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56706,7 +56706,7 @@
 
 func (c *DisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56900,7 +56900,7 @@
 
 func (c *DisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57070,7 +57070,7 @@
 
 func (c *DisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57246,7 +57246,7 @@
 
 func (c *DisksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57440,7 +57440,7 @@
 
 func (c *DisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57675,7 +57675,7 @@
 
 func (c *DisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57888,7 +57888,7 @@
 
 func (c *DisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58075,7 +58075,7 @@
 
 func (c *DisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58244,7 +58244,7 @@
 
 func (c *DisksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58427,7 +58427,7 @@
 
 func (c *DisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58595,7 +58595,7 @@
 
 func (c *DisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58774,7 +58774,7 @@
 
 func (c *ExternalVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58933,7 +58933,7 @@
 
 func (c *ExternalVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59099,7 +59099,7 @@
 
 func (c *ExternalVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59317,7 +59317,7 @@
 
 func (c *ExternalVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59501,7 +59501,7 @@
 
 func (c *ExternalVpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59653,7 +59653,7 @@
 
 func (c *ExternalVpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59824,7 +59824,7 @@
 
 func (c *FirewallsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59983,7 +59983,7 @@
 
 func (c *FirewallsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60150,7 +60150,7 @@
 
 func (c *FirewallsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60369,7 +60369,7 @@
 
 func (c *FirewallsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60574,7 +60574,7 @@
 
 func (c *FirewallsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60731,7 +60731,7 @@
 
 func (c *FirewallsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60906,7 +60906,7 @@
 
 func (c *FirewallsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61134,7 +61134,7 @@
 
 func (c *ForwardingRulesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61337,7 +61337,7 @@
 
 func (c *ForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61507,7 +61507,7 @@
 
 func (c *ForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61685,7 +61685,7 @@
 
 func (c *ForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61916,7 +61916,7 @@
 
 func (c *ForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62132,7 +62132,7 @@
 
 func (c *ForwardingRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62320,7 +62320,7 @@
 
 func (c *ForwardingRulesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62509,7 +62509,7 @@
 
 func (c *ForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62677,7 +62677,7 @@
 
 func (c *ForwardingRulesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62857,7 +62857,7 @@
 
 func (c *GlobalAddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63017,7 +63017,7 @@
 
 func (c *GlobalAddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63184,7 +63184,7 @@
 
 func (c *GlobalAddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63403,7 +63403,7 @@
 
 func (c *GlobalAddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63587,7 +63587,7 @@
 
 func (c *GlobalAddressesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63739,7 +63739,7 @@
 
 func (c *GlobalAddressesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63910,7 +63910,7 @@
 
 func (c *GlobalForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64070,7 +64070,7 @@
 
 func (c *GlobalForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64237,7 +64237,7 @@
 
 func (c *GlobalForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64456,7 +64456,7 @@
 
 func (c *GlobalForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64661,7 +64661,7 @@
 
 func (c *GlobalForwardingRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64819,7 +64819,7 @@
 
 func (c *GlobalForwardingRulesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64992,7 +64992,7 @@
 
 func (c *GlobalForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65149,7 +65149,7 @@
 
 func (c *GlobalForwardingRulesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65321,7 +65321,7 @@
 
 func (c *GlobalNetworkEndpointGroupsAttachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65495,7 +65495,7 @@
 
 func (c *GlobalNetworkEndpointGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65663,7 +65663,7 @@
 
 func (c *GlobalNetworkEndpointGroupsDetachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65829,7 +65829,7 @@
 
 func (c *GlobalNetworkEndpointGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65994,7 +65994,7 @@
 
 func (c *GlobalNetworkEndpointGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66212,7 +66212,7 @@
 
 func (c *GlobalNetworkEndpointGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66456,7 +66456,7 @@
 
 func (c *GlobalNetworkEndpointGroupsListNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66717,7 +66717,7 @@
 
 func (c *GlobalOperationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66899,7 +66899,7 @@
 
 func (c *GlobalOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67026,7 +67026,7 @@
 
 func (c *GlobalOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67245,7 +67245,7 @@
 
 func (c *GlobalOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67434,7 +67434,7 @@
 
 func (c *GlobalOperationsWaitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67582,7 +67582,7 @@
 
 func (c *GlobalOrganizationOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67709,7 +67709,7 @@
 
 func (c *GlobalOrganizationOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67928,7 +67928,7 @@
 
 func (c *GlobalOrganizationOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68114,7 +68114,7 @@
 
 func (c *GlobalOrganizationOperationsWaitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68272,7 +68272,7 @@
 
 func (c *GlobalPublicDelegatedPrefixesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68430,7 +68430,7 @@
 
 func (c *GlobalPublicDelegatedPrefixesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68596,7 +68596,7 @@
 
 func (c *GlobalPublicDelegatedPrefixesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68814,7 +68814,7 @@
 
 func (c *GlobalPublicDelegatedPrefixesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69018,7 +69018,7 @@
 
 func (c *GlobalPublicDelegatedPrefixesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69246,7 +69246,7 @@
 
 func (c *HealthChecksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69446,7 +69446,7 @@
 
 func (c *HealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69605,7 +69605,7 @@
 
 func (c *HealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69771,7 +69771,7 @@
 
 func (c *HealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69989,7 +69989,7 @@
 
 func (c *HealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70193,7 +70193,7 @@
 
 func (c *HealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70350,7 +70350,7 @@
 
 func (c *HealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70523,7 +70523,7 @@
 
 func (c *HealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70698,7 +70698,7 @@
 
 func (c *HttpHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70858,7 +70858,7 @@
 
 func (c *HttpHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71025,7 +71025,7 @@
 
 func (c *HttpHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71244,7 +71244,7 @@
 
 func (c *HttpHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71449,7 +71449,7 @@
 
 func (c *HttpHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71606,7 +71606,7 @@
 
 func (c *HttpHealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71780,7 +71780,7 @@
 
 func (c *HttpHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71954,7 +71954,7 @@
 
 func (c *HttpsHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72113,7 +72113,7 @@
 
 func (c *HttpsHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72279,7 +72279,7 @@
 
 func (c *HttpsHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72497,7 +72497,7 @@
 
 func (c *HttpsHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72701,7 +72701,7 @@
 
 func (c *HttpsHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72858,7 +72858,7 @@
 
 func (c *HttpsHealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73031,7 +73031,7 @@
 
 func (c *HttpsHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73206,7 +73206,7 @@
 
 func (c *ImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73377,7 +73377,7 @@
 
 func (c *ImagesDeprecateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73544,7 +73544,7 @@
 
 func (c *ImagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73702,7 +73702,7 @@
 
 func (c *ImagesGetFromFamilyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73867,7 +73867,7 @@
 
 func (c *ImagesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74046,7 +74046,7 @@
 
 func (c *ImagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74278,7 +74278,7 @@
 
 func (c *ImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74462,7 +74462,7 @@
 
 func (c *ImagesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74615,7 +74615,7 @@
 
 func (c *ImagesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74767,7 +74767,7 @@
 
 func (c *ImagesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74956,7 +74956,7 @@
 
 func (c *InstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75190,7 +75190,7 @@
 
 func (c *InstanceGroupManagersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75378,7 +75378,7 @@
 
 func (c *InstanceGroupManagersApplyUpdatesToInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75562,7 +75562,7 @@
 
 func (c *InstanceGroupManagersCreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75747,7 +75747,7 @@
 
 func (c *InstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75938,7 +75938,7 @@
 
 func (c *InstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76105,7 +76105,7 @@
 
 func (c *InstanceGroupManagersDeletePerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76276,7 +76276,7 @@
 
 func (c *InstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76459,7 +76459,7 @@
 
 func (c *InstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76688,7 +76688,7 @@
 
 func (c *InstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76954,7 +76954,7 @@
 
 func (c *InstanceGroupManagersListErrorsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77222,7 +77222,7 @@
 
 func (c *InstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77484,7 +77484,7 @@
 
 func (c *InstanceGroupManagersListPerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77708,7 +77708,7 @@
 
 func (c *InstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77896,7 +77896,7 @@
 
 func (c *InstanceGroupManagersPatchPerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78094,7 +78094,7 @@
 
 func (c *InstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78298,7 +78298,7 @@
 
 func (c *InstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78497,7 +78497,7 @@
 
 func (c *InstanceGroupManagersResizeAdvancedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78683,7 +78683,7 @@
 
 func (c *InstanceGroupManagersSetAutoHealingPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78870,7 +78870,7 @@
 
 func (c *InstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79061,7 +79061,7 @@
 
 func (c *InstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79227,7 +79227,7 @@
 
 func (c *InstanceGroupManagersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79414,7 +79414,7 @@
 
 func (c *InstanceGroupManagersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79602,7 +79602,7 @@
 
 func (c *InstanceGroupManagersUpdatePerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79789,7 +79789,7 @@
 
 func (c *InstanceGroupsAddInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80023,7 +80023,7 @@
 
 func (c *InstanceGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80227,7 +80227,7 @@
 
 func (c *InstanceGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80395,7 +80395,7 @@
 
 func (c *InstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80570,7 +80570,7 @@
 
 func (c *InstanceGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80799,7 +80799,7 @@
 
 func (c *InstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81055,7 +81055,7 @@
 
 func (c *InstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81285,7 +81285,7 @@
 
 func (c *InstanceGroupsRemoveInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81470,7 +81470,7 @@
 
 func (c *InstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81636,7 +81636,7 @@
 
 func (c *InstanceGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81818,7 +81818,7 @@
 
 func (c *InstanceTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81978,7 +81978,7 @@
 
 func (c *InstanceTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82143,7 +82143,7 @@
 
 func (c *InstanceTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82319,7 +82319,7 @@
 
 func (c *InstanceTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82539,7 +82539,7 @@
 
 func (c *InstanceTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82723,7 +82723,7 @@
 
 func (c *InstanceTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82875,7 +82875,7 @@
 
 func (c *InstanceTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83051,7 +83051,7 @@
 
 func (c *InstancesAddAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83247,7 +83247,7 @@
 
 func (c *InstancesAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83485,7 +83485,7 @@
 
 func (c *InstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83701,7 +83701,7 @@
 
 func (c *InstancesAttachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83893,7 +83893,7 @@
 
 func (c *InstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84073,7 +84073,7 @@
 
 func (c *InstancesDeleteAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84266,7 +84266,7 @@
 
 func (c *InstancesDetachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84444,7 +84444,7 @@
 
 func (c *InstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84614,7 +84614,7 @@
 
 func (c *InstancesGetEffectiveFirewallsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84804,7 +84804,7 @@
 
 func (c *InstancesGetGuestAttributesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84990,7 +84990,7 @@
 
 func (c *InstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85183,7 +85183,7 @@
 
 func (c *InstancesGetSerialPortOutputCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85366,7 +85366,7 @@
 
 func (c *InstancesGetShieldedInstanceIdentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85534,7 +85534,7 @@
 
 func (c *InstancesGetShieldedVmIdentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85741,7 +85741,7 @@
 
 func (c *InstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85981,7 +85981,7 @@
 
 func (c *InstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86249,7 +86249,7 @@
 
 func (c *InstancesListReferrersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86471,7 +86471,7 @@
 
 func (c *InstancesRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86658,7 +86658,7 @@
 
 func (c *InstancesResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86838,7 +86838,7 @@
 
 func (c *InstancesResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87030,7 +87030,7 @@
 
 func (c *InstancesSetDeletionProtectionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87216,7 +87216,7 @@
 
 func (c *InstancesSetDiskAutoDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87392,7 +87392,7 @@
 
 func (c *InstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87575,7 +87575,7 @@
 
 func (c *InstancesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87763,7 +87763,7 @@
 
 func (c *InstancesSetMachineResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87951,7 +87951,7 @@
 
 func (c *InstancesSetMachineTypeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88139,7 +88139,7 @@
 
 func (c *InstancesSetMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88328,7 +88328,7 @@
 
 func (c *InstancesSetMinCpuPlatformCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88515,7 +88515,7 @@
 
 func (c *InstancesSetNameCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88703,7 +88703,7 @@
 
 func (c *InstancesSetSchedulingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88891,7 +88891,7 @@
 
 func (c *InstancesSetServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89081,7 +89081,7 @@
 
 func (c *InstancesSetShieldedInstanceIntegrityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89271,7 +89271,7 @@
 
 func (c *InstancesSetShieldedVmIntegrityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89459,7 +89459,7 @@
 
 func (c *InstancesSetTagsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89625,7 +89625,7 @@
 
 func (c *InstancesSimulateMaintenanceEventCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89799,7 +89799,7 @@
 
 func (c *InstancesStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89979,7 +89979,7 @@
 
 func (c *InstancesStartWithEncryptionKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90178,7 +90178,7 @@
 
 func (c *InstancesStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90373,7 +90373,7 @@
 
 func (c *InstancesSuspendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90538,7 +90538,7 @@
 
 func (c *InstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90725,7 +90725,7 @@
 
 func (c *InstancesUpdateAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90921,7 +90921,7 @@
 
 func (c *InstancesUpdateDisplayDeviceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91110,7 +91110,7 @@
 
 func (c *InstancesUpdateNetworkInterfaceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91307,7 +91307,7 @@
 
 func (c *InstancesUpdateShieldedInstanceConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91496,7 +91496,7 @@
 
 func (c *InstancesUpdateShieldedVmConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91732,7 +91732,7 @@
 
 func (c *InterconnectAttachmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91935,7 +91935,7 @@
 
 func (c *InterconnectAttachmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92104,7 +92104,7 @@
 
 func (c *InterconnectAttachmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92280,7 +92280,7 @@
 
 func (c *InterconnectAttachmentsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92470,7 +92470,7 @@
 
 func (c *InterconnectAttachmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92704,7 +92704,7 @@
 
 func (c *InterconnectAttachmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92919,7 +92919,7 @@
 
 func (c *InterconnectAttachmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93088,7 +93088,7 @@
 
 func (c *InterconnectAttachmentsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93271,7 +93271,7 @@
 
 func (c *InterconnectAttachmentsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93439,7 +93439,7 @@
 
 func (c *InterconnectAttachmentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93611,7 +93611,7 @@
 
 func (c *InterconnectLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93829,7 +93829,7 @@
 
 func (c *InterconnectLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94012,7 +94012,7 @@
 
 func (c *InterconnectLocationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94182,7 +94182,7 @@
 
 func (c *InterconnectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94341,7 +94341,7 @@
 
 func (c *InterconnectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94498,7 +94498,7 @@
 
 func (c *InterconnectsGetDiagnosticsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94664,7 +94664,7 @@
 
 func (c *InterconnectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94836,7 +94836,7 @@
 
 func (c *InterconnectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95054,7 +95054,7 @@
 
 func (c *InterconnectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95258,7 +95258,7 @@
 
 func (c *InterconnectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95416,7 +95416,7 @@
 
 func (c *InterconnectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95569,7 +95569,7 @@
 
 func (c *InterconnectsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95721,7 +95721,7 @@
 
 func (c *InterconnectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95884,7 +95884,7 @@
 
 func (c *LicenseCodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96049,7 +96049,7 @@
 
 func (c *LicenseCodesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96204,7 +96204,7 @@
 
 func (c *LicenseCodesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96356,7 +96356,7 @@
 
 func (c *LicenseCodesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96526,7 +96526,7 @@
 
 func (c *LicensesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96685,7 +96685,7 @@
 
 func (c *LicensesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96850,7 +96850,7 @@
 
 func (c *LicensesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97021,7 +97021,7 @@
 
 func (c *LicensesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97247,7 +97247,7 @@
 
 func (c *LicensesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97431,7 +97431,7 @@
 
 func (c *LicensesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97583,7 +97583,7 @@
 
 func (c *LicensesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97754,7 +97754,7 @@
 
 func (c *MachineImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97913,7 +97913,7 @@
 
 func (c *MachineImagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98078,7 +98078,7 @@
 
 func (c *MachineImagesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98260,7 +98260,7 @@
 
 func (c *MachineImagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98483,7 +98483,7 @@
 
 func (c *MachineImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98667,7 +98667,7 @@
 
 func (c *MachineImagesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98819,7 +98819,7 @@
 
 func (c *MachineImagesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99043,7 +99043,7 @@
 
 func (c *MachineTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99239,7 +99239,7 @@
 
 func (c *MachineTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99469,7 +99469,7 @@
 
 func (c *MachineTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99731,7 +99731,7 @@
 
 func (c *NetworkEndpointGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99937,7 +99937,7 @@
 
 func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100123,7 +100123,7 @@
 
 func (c *NetworkEndpointGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100301,7 +100301,7 @@
 
 func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100477,7 +100477,7 @@
 
 func (c *NetworkEndpointGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100652,7 +100652,7 @@
 
 func (c *NetworkEndpointGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100881,7 +100881,7 @@
 
 func (c *NetworkEndpointGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101137,7 +101137,7 @@
 
 func (c *NetworkEndpointGroupsListNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101345,7 +101345,7 @@
 
 func (c *NetworkEndpointGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101526,7 +101526,7 @@
 
 func (c *NetworksAddPeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101701,7 +101701,7 @@
 
 func (c *NetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101861,7 +101861,7 @@
 
 func (c *NetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102018,7 +102018,7 @@
 
 func (c *NetworksGetEffectiveFirewallsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102185,7 +102185,7 @@
 
 func (c *NetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102404,7 +102404,7 @@
 
 func (c *NetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102667,7 +102667,7 @@
 
 func (c *NetworksListIpAddressesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102971,7 +102971,7 @@
 
 func (c *NetworksListIpOwnersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103288,7 +103288,7 @@
 
 func (c *NetworksListPeeringRoutesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103524,7 +103524,7 @@
 
 func (c *NetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103700,7 +103700,7 @@
 
 func (c *NetworksRemovePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103874,7 +103874,7 @@
 
 func (c *NetworksSwitchToCustomModeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104023,7 +104023,7 @@
 
 func (c *NetworksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104198,7 +104198,7 @@
 
 func (c *NetworksUpdatePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104376,7 +104376,7 @@
 
 func (c *NodeGroupsAddNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104613,7 +104613,7 @@
 
 func (c *NodeGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104815,7 +104815,7 @@
 
 func (c *NodeGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104994,7 +104994,7 @@
 
 func (c *NodeGroupsDeleteNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105173,7 +105173,7 @@
 
 func (c *NodeGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105349,7 +105349,7 @@
 
 func (c *NodeGroupsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105533,7 +105533,7 @@
 
 func (c *NodeGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105771,7 +105771,7 @@
 
 func (c *NodeGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106026,7 +106026,7 @@
 
 func (c *NodeGroupsListNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106245,7 +106245,7 @@
 
 func (c *NodeGroupsSetAutoscalingPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106414,7 +106414,7 @@
 
 func (c *NodeGroupsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106596,7 +106596,7 @@
 
 func (c *NodeGroupsSetNodeTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106764,7 +106764,7 @@
 
 func (c *NodeGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106996,7 +106996,7 @@
 
 func (c *NodeTemplatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107198,7 +107198,7 @@
 
 func (c *NodeTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107368,7 +107368,7 @@
 
 func (c *NodeTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107544,7 +107544,7 @@
 
 func (c *NodeTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107727,7 +107727,7 @@
 
 func (c *NodeTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107956,7 +107956,7 @@
 
 func (c *NodeTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108151,7 +108151,7 @@
 
 func (c *NodeTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108314,7 +108314,7 @@
 
 func (c *NodeTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108546,7 +108546,7 @@
 
 func (c *NodeTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108741,7 +108741,7 @@
 
 func (c *NodeTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108970,7 +108970,7 @@
 
 func (c *NodeTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109189,7 +109189,7 @@
 
 func (c *OrganizationSecurityPoliciesAddAssociationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109359,7 +109359,7 @@
 
 func (c *OrganizationSecurityPoliciesAddRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109529,7 +109529,7 @@
 
 func (c *OrganizationSecurityPoliciesCopyRulesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109689,7 +109689,7 @@
 
 func (c *OrganizationSecurityPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109836,7 +109836,7 @@
 
 func (c *OrganizationSecurityPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109989,7 +109989,7 @@
 
 func (c *OrganizationSecurityPoliciesGetAssociationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110147,7 +110147,7 @@
 
 func (c *OrganizationSecurityPoliciesGetRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110314,7 +110314,7 @@
 
 func (c *OrganizationSecurityPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110529,7 +110529,7 @@
 
 func (c *OrganizationSecurityPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110717,7 +110717,7 @@
 
 func (c *OrganizationSecurityPoliciesListAssociationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110871,7 +110871,7 @@
 
 func (c *OrganizationSecurityPoliciesMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111033,7 +111033,7 @@
 
 func (c *OrganizationSecurityPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111205,7 +111205,7 @@
 
 func (c *OrganizationSecurityPoliciesPatchRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111381,7 +111381,7 @@
 
 func (c *OrganizationSecurityPoliciesRemoveAssociationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111548,7 +111548,7 @@
 
 func (c *OrganizationSecurityPoliciesRemoveRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111764,7 +111764,7 @@
 
 func (c *PacketMirroringsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111966,7 +111966,7 @@
 
 func (c *PacketMirroringsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112135,7 +112135,7 @@
 
 func (c *PacketMirroringsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112312,7 +112312,7 @@
 
 func (c *PacketMirroringsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112542,7 +112542,7 @@
 
 func (c *PacketMirroringsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112757,7 +112757,7 @@
 
 func (c *PacketMirroringsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112925,7 +112925,7 @@
 
 func (c *PacketMirroringsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113102,7 +113102,7 @@
 
 func (c *ProjectsDisableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113260,7 +113260,7 @@
 
 func (c *ProjectsDisableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113423,7 +113423,7 @@
 
 func (c *ProjectsEnableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113582,7 +113582,7 @@
 
 func (c *ProjectsEnableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113738,7 +113738,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113885,7 +113885,7 @@
 
 func (c *ProjectsGetXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114094,7 +114094,7 @@
 
 func (c *ProjectsGetXpnResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114337,7 +114337,7 @@
 
 func (c *ProjectsListXpnHostsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114541,7 +114541,7 @@
 
 func (c *ProjectsMoveDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114706,7 +114706,7 @@
 
 func (c *ProjectsMoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114873,7 +114873,7 @@
 
 func (c *ProjectsSetCommonInstanceMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115040,7 +115040,7 @@
 
 func (c *ProjectsSetDefaultNetworkTierCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115207,7 +115207,7 @@
 
 func (c *ProjectsSetDefaultServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115375,7 +115375,7 @@
 
 func (c *ProjectsSetUsageExportBucketCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115543,7 +115543,7 @@
 
 func (c *PublicAdvertisedPrefixesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115701,7 +115701,7 @@
 
 func (c *PublicAdvertisedPrefixesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115867,7 +115867,7 @@
 
 func (c *PublicAdvertisedPrefixesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116085,7 +116085,7 @@
 
 func (c *PublicAdvertisedPrefixesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116289,7 +116289,7 @@
 
 func (c *PublicAdvertisedPrefixesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116517,7 +116517,7 @@
 
 func (c *PublicDelegatedPrefixesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116720,7 +116720,7 @@
 
 func (c *PublicDelegatedPrefixesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116889,7 +116889,7 @@
 
 func (c *PublicDelegatedPrefixesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117066,7 +117066,7 @@
 
 func (c *PublicDelegatedPrefixesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117295,7 +117295,7 @@
 
 func (c *PublicDelegatedPrefixesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117510,7 +117510,7 @@
 
 func (c *PublicDelegatedPrefixesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117695,7 +117695,7 @@
 
 func (c *RegionAutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117864,7 +117864,7 @@
 
 func (c *RegionAutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118040,7 +118040,7 @@
 
 func (c *RegionAutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118269,7 +118269,7 @@
 
 func (c *RegionAutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118489,7 +118489,7 @@
 
 func (c *RegionAutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118654,7 +118654,7 @@
 
 func (c *RegionAutoscalersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118842,7 +118842,7 @@
 
 func (c *RegionAutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119024,7 +119024,7 @@
 
 func (c *RegionBackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119193,7 +119193,7 @@
 
 func (c *RegionBackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119352,7 +119352,7 @@
 
 func (c *RegionBackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119535,7 +119535,7 @@
 
 func (c *RegionBackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119765,7 +119765,7 @@
 
 func (c *RegionBackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119982,7 +119982,7 @@
 
 func (c *RegionBackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120150,7 +120150,7 @@
 
 func (c *RegionBackendServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120336,7 +120336,7 @@
 
 func (c *RegionBackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120572,7 +120572,7 @@
 
 func (c *RegionCommitmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120767,7 +120767,7 @@
 
 func (c *RegionCommitmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120943,7 +120943,7 @@
 
 func (c *RegionCommitmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121172,7 +121172,7 @@
 
 func (c *RegionCommitmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121366,7 +121366,7 @@
 
 func (c *RegionCommitmentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121550,7 +121550,7 @@
 
 func (c *RegionCommitmentsUpdateReservationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121728,7 +121728,7 @@
 
 func (c *RegionDiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121957,7 +121957,7 @@
 
 func (c *RegionDiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122172,7 +122172,7 @@
 
 func (c *RegionDisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122368,7 +122368,7 @@
 
 func (c *RegionDisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122561,7 +122561,7 @@
 
 func (c *RegionDisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122729,7 +122729,7 @@
 
 func (c *RegionDisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122905,7 +122905,7 @@
 
 func (c *RegionDisksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123095,7 +123095,7 @@
 
 func (c *RegionDisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123329,7 +123329,7 @@
 
 func (c *RegionDisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123542,7 +123542,7 @@
 
 func (c *RegionDisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123729,7 +123729,7 @@
 
 func (c *RegionDisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123898,7 +123898,7 @@
 
 func (c *RegionDisksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124080,7 +124080,7 @@
 
 func (c *RegionDisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124248,7 +124248,7 @@
 
 func (c *RegionDisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124429,7 +124429,7 @@
 
 func (c *RegionHealthCheckServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124597,7 +124597,7 @@
 
 func (c *RegionHealthCheckServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124773,7 +124773,7 @@
 
 func (c *RegionHealthCheckServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125003,7 +125003,7 @@
 
 func (c *RegionHealthCheckServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125197,7 +125197,7 @@
 
 func (c *RegionHealthCheckServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125378,7 +125378,7 @@
 
 func (c *RegionHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125548,7 +125548,7 @@
 
 func (c *RegionHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125725,7 +125725,7 @@
 
 func (c *RegionHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125954,7 +125954,7 @@
 
 func (c *RegionHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126169,7 +126169,7 @@
 
 func (c *RegionHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126337,7 +126337,7 @@
 
 func (c *RegionHealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126521,7 +126521,7 @@
 
 func (c *RegionHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126723,7 +126723,7 @@
 
 func (c *RegionInstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126889,7 +126889,7 @@
 
 func (c *RegionInstanceGroupManagersApplyUpdatesToInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127073,7 +127073,7 @@
 
 func (c *RegionInstanceGroupManagersCreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127256,7 +127256,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127448,7 +127448,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127615,7 +127615,7 @@
 
 func (c *RegionInstanceGroupManagersDeletePerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127785,7 +127785,7 @@
 
 func (c *RegionInstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127967,7 +127967,7 @@
 
 func (c *RegionInstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128196,7 +128196,7 @@
 
 func (c *RegionInstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128462,7 +128462,7 @@
 
 func (c *RegionInstanceGroupManagersListErrorsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128728,7 +128728,7 @@
 
 func (c *RegionInstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128990,7 +128990,7 @@
 
 func (c *RegionInstanceGroupManagersListPerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129214,7 +129214,7 @@
 
 func (c *RegionInstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129402,7 +129402,7 @@
 
 func (c *RegionInstanceGroupManagersPatchPerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129600,7 +129600,7 @@
 
 func (c *RegionInstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129796,7 +129796,7 @@
 
 func (c *RegionInstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129984,7 +129984,7 @@
 
 func (c *RegionInstanceGroupManagersSetAutoHealingPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130171,7 +130171,7 @@
 
 func (c *RegionInstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130357,7 +130357,7 @@
 
 func (c *RegionInstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130523,7 +130523,7 @@
 
 func (c *RegionInstanceGroupManagersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130710,7 +130710,7 @@
 
 func (c *RegionInstanceGroupManagersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130898,7 +130898,7 @@
 
 func (c *RegionInstanceGroupManagersUpdatePerInstanceConfigsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131073,7 +131073,7 @@
 
 func (c *RegionInstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131300,7 +131300,7 @@
 
 func (c *RegionInstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131559,7 +131559,7 @@
 
 func (c *RegionInstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131785,7 +131785,7 @@
 
 func (c *RegionInstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131951,7 +131951,7 @@
 
 func (c *RegionInstanceGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132132,7 +132132,7 @@
 
 func (c *RegionNotificationEndpointsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132301,7 +132301,7 @@
 
 func (c *RegionNotificationEndpointsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132478,7 +132478,7 @@
 
 func (c *RegionNotificationEndpointsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132707,7 +132707,7 @@
 
 func (c *RegionNotificationEndpointsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132901,7 +132901,7 @@
 
 func (c *RegionNotificationEndpointsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133064,7 +133064,7 @@
 
 func (c *RegionOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133201,7 +133201,7 @@
 
 func (c *RegionOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133431,7 +133431,7 @@
 
 func (c *RegionOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133631,7 +133631,7 @@
 
 func (c *RegionOperationsWaitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133804,7 +133804,7 @@
 
 func (c *RegionSslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133974,7 +133974,7 @@
 
 func (c *RegionSslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134151,7 +134151,7 @@
 
 func (c *RegionSslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134381,7 +134381,7 @@
 
 func (c *RegionSslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134576,7 +134576,7 @@
 
 func (c *RegionSslCertificatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134757,7 +134757,7 @@
 
 func (c *RegionTargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134927,7 +134927,7 @@
 
 func (c *RegionTargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135104,7 +135104,7 @@
 
 func (c *RegionTargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135334,7 +135334,7 @@
 
 func (c *RegionTargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135547,7 +135547,7 @@
 
 func (c *RegionTargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135715,7 +135715,7 @@
 
 func (c *RegionTargetHttpProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135896,7 +135896,7 @@
 
 func (c *RegionTargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136066,7 +136066,7 @@
 
 func (c *RegionTargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136243,7 +136243,7 @@
 
 func (c *RegionTargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136473,7 +136473,7 @@
 
 func (c *RegionTargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136686,7 +136686,7 @@
 
 func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136873,7 +136873,7 @@
 
 func (c *RegionTargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137041,7 +137041,7 @@
 
 func (c *RegionTargetHttpsProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137210,7 +137210,7 @@
 
 func (c *RegionUrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137380,7 +137380,7 @@
 
 func (c *RegionUrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137545,7 +137545,7 @@
 
 func (c *RegionUrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137712,7 +137712,7 @@
 
 func (c *RegionUrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137951,7 +137951,7 @@
 
 func (c *RegionUrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138154,7 +138154,7 @@
 
 func (c *RegionUrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138322,7 +138322,7 @@
 
 func (c *RegionUrlMapsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138493,7 +138493,7 @@
 
 func (c *RegionUrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138662,7 +138662,7 @@
 
 func (c *RegionUrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138834,7 +138834,7 @@
 
 func (c *RegionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139053,7 +139053,7 @@
 
 func (c *RegionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139306,7 +139306,7 @@
 
 func (c *ReservationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139508,7 +139508,7 @@
 
 func (c *ReservationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139677,7 +139677,7 @@
 
 func (c *ReservationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139853,7 +139853,7 @@
 
 func (c *ReservationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140036,7 +140036,7 @@
 
 func (c *ReservationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140266,7 +140266,7 @@
 
 func (c *ReservationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140480,7 +140480,7 @@
 
 func (c *ReservationsResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140649,7 +140649,7 @@
 
 func (c *ReservationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140812,7 +140812,7 @@
 
 func (c *ReservationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141044,7 +141044,7 @@
 
 func (c *ResourcePoliciesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141246,7 +141246,7 @@
 
 func (c *ResourcePoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141415,7 +141415,7 @@
 
 func (c *ResourcePoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141591,7 +141591,7 @@
 
 func (c *ResourcePoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141773,7 +141773,7 @@
 
 func (c *ResourcePoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142003,7 +142003,7 @@
 
 func (c *ResourcePoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142198,7 +142198,7 @@
 
 func (c *ResourcePoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142361,7 +142361,7 @@
 
 func (c *ResourcePoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142593,7 +142593,7 @@
 
 func (c *RoutersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142795,7 +142795,7 @@
 
 func (c *RoutersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142965,7 +142965,7 @@
 
 func (c *RoutersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143205,7 +143205,7 @@
 
 func (c *RoutersGetNatMappingInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143422,7 +143422,7 @@
 
 func (c *RoutersGetRouterStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143599,7 +143599,7 @@
 
 func (c *RoutersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143828,7 +143828,7 @@
 
 func (c *RoutersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144043,7 +144043,7 @@
 
 func (c *RoutersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144212,7 +144212,7 @@
 
 func (c *RoutersPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144376,7 +144376,7 @@
 
 func (c *RoutersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144562,7 +144562,7 @@
 
 func (c *RoutersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144746,7 +144746,7 @@
 
 func (c *RoutesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144906,7 +144906,7 @@
 
 func (c *RoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145073,7 +145073,7 @@
 
 func (c *RoutesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145292,7 +145292,7 @@
 
 func (c *RoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145475,7 +145475,7 @@
 
 func (c *RoutesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145635,7 +145635,7 @@
 
 func (c *SecurityPoliciesAddRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145809,7 +145809,7 @@
 
 func (c *SecurityPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145967,7 +145967,7 @@
 
 func (c *SecurityPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -146131,7 +146131,7 @@
 
 func (c *SecurityPoliciesGetRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -146309,7 +146309,7 @@
 
 func (c *SecurityPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -146532,7 +146532,7 @@
 
 func (c *SecurityPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -146786,7 +146786,7 @@
 
 func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -146969,7 +146969,7 @@
 
 func (c *SecurityPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147140,7 +147140,7 @@
 
 func (c *SecurityPoliciesPatchRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147308,7 +147308,7 @@
 
 func (c *SecurityPoliciesRemoveRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147459,7 +147459,7 @@
 
 func (c *SecurityPoliciesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147611,7 +147611,7 @@
 
 func (c *SecurityPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147788,7 +147788,7 @@
 
 func (c *SnapshotsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -147948,7 +147948,7 @@
 
 func (c *SnapshotsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -148113,7 +148113,7 @@
 
 func (c *SnapshotsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -148338,7 +148338,7 @@
 
 func (c *SnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -148522,7 +148522,7 @@
 
 func (c *SnapshotsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -148675,7 +148675,7 @@
 
 func (c *SnapshotsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -148827,7 +148827,7 @@
 
 func (c *SnapshotsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149051,7 +149051,7 @@
 
 func (c *SslCertificatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149251,7 +149251,7 @@
 
 func (c *SslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149410,7 +149410,7 @@
 
 func (c *SslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149576,7 +149576,7 @@
 
 func (c *SslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149794,7 +149794,7 @@
 
 func (c *SslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -149977,7 +149977,7 @@
 
 func (c *SslCertificatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -150148,7 +150148,7 @@
 
 func (c *SslPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -150305,7 +150305,7 @@
 
 func (c *SslPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -150470,7 +150470,7 @@
 
 func (c *SslPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -150688,7 +150688,7 @@
 
 func (c *SslPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -150942,7 +150942,7 @@
 
 func (c *SslPoliciesListAvailableFeaturesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -151125,7 +151125,7 @@
 
 func (c *SslPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -151281,7 +151281,7 @@
 
 func (c *SslPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -151504,7 +151504,7 @@
 
 func (c *SubnetworksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -151706,7 +151706,7 @@
 
 func (c *SubnetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -151885,7 +151885,7 @@
 
 func (c *SubnetworksExpandIpCidrRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -152063,7 +152063,7 @@
 
 func (c *SubnetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -152239,7 +152239,7 @@
 
 func (c *SubnetworksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -152421,7 +152421,7 @@
 
 func (c *SubnetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -152650,7 +152650,7 @@
 
 func (c *SubnetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -152914,7 +152914,7 @@
 
 func (c *SubnetworksListUsableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -153136,7 +153136,7 @@
 
 func (c *SubnetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -153311,7 +153311,7 @@
 
 func (c *SubnetworksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -153494,7 +153494,7 @@
 
 func (c *SubnetworksSetPrivateIpGoogleAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -153662,7 +153662,7 @@
 
 func (c *SubnetworksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -153895,7 +153895,7 @@
 
 func (c *TargetHttpProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -154096,7 +154096,7 @@
 
 func (c *TargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -154256,7 +154256,7 @@
 
 func (c *TargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -154423,7 +154423,7 @@
 
 func (c *TargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -154642,7 +154642,7 @@
 
 func (c *TargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -154845,7 +154845,7 @@
 
 func (c *TargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155002,7 +155002,7 @@
 
 func (c *TargetHttpProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155226,7 +155226,7 @@
 
 func (c *TargetHttpsProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155426,7 +155426,7 @@
 
 func (c *TargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155585,7 +155585,7 @@
 
 func (c *TargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155751,7 +155751,7 @@
 
 func (c *TargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -155969,7 +155969,7 @@
 
 func (c *TargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -156171,7 +156171,7 @@
 
 func (c *TargetHttpsProxiesSetQuicOverrideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -156346,7 +156346,7 @@
 
 func (c *TargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -156525,7 +156525,7 @@
 
 func (c *TargetHttpsProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -156700,7 +156700,7 @@
 
 func (c *TargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -156857,7 +156857,7 @@
 
 func (c *TargetHttpsProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -157081,7 +157081,7 @@
 
 func (c *TargetInstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -157284,7 +157284,7 @@
 
 func (c *TargetInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -157455,7 +157455,7 @@
 
 func (c *TargetInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -157633,7 +157633,7 @@
 
 func (c *TargetInstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -157864,7 +157864,7 @@
 
 func (c *TargetInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -158058,7 +158058,7 @@
 
 func (c *TargetInstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -158242,7 +158242,7 @@
 
 func (c *TargetPoolsAddHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -158430,7 +158430,7 @@
 
 func (c *TargetPoolsAddInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -158667,7 +158667,7 @@
 
 func (c *TargetPoolsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -158870,7 +158870,7 @@
 
 func (c *TargetPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -159041,7 +159041,7 @@
 
 func (c *TargetPoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -159202,7 +159202,7 @@
 
 func (c *TargetPoolsGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -159385,7 +159385,7 @@
 
 func (c *TargetPoolsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -159615,7 +159615,7 @@
 
 func (c *TargetPoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -159829,7 +159829,7 @@
 
 func (c *TargetPoolsRemoveHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160017,7 +160017,7 @@
 
 func (c *TargetPoolsRemoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160212,7 +160212,7 @@
 
 func (c *TargetPoolsSetBackupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160386,7 +160386,7 @@
 
 func (c *TargetPoolsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160565,7 +160565,7 @@
 
 func (c *TargetSslProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160724,7 +160724,7 @@
 
 func (c *TargetSslProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -160890,7 +160890,7 @@
 
 func (c *TargetSslProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161108,7 +161108,7 @@
 
 func (c *TargetSslProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161310,7 +161310,7 @@
 
 func (c *TargetSslProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161486,7 +161486,7 @@
 
 func (c *TargetSslProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161662,7 +161662,7 @@
 
 func (c *TargetSslProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161841,7 +161841,7 @@
 
 func (c *TargetSslProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -161997,7 +161997,7 @@
 
 func (c *TargetSslProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -162167,7 +162167,7 @@
 
 func (c *TargetTcpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -162326,7 +162326,7 @@
 
 func (c *TargetTcpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -162492,7 +162492,7 @@
 
 func (c *TargetTcpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -162710,7 +162710,7 @@
 
 func (c *TargetTcpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -162912,7 +162912,7 @@
 
 func (c *TargetTcpProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -163088,7 +163088,7 @@
 
 func (c *TargetTcpProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -163245,7 +163245,7 @@
 
 func (c *TargetTcpProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -163468,7 +163468,7 @@
 
 func (c *TargetVpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -163670,7 +163670,7 @@
 
 func (c *TargetVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -163840,7 +163840,7 @@
 
 func (c *TargetVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -164017,7 +164017,7 @@
 
 func (c *TargetVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -164247,7 +164247,7 @@
 
 func (c *TargetVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -164461,7 +164461,7 @@
 
 func (c *TargetVpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -164629,7 +164629,7 @@
 
 func (c *TargetVpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -164862,7 +164862,7 @@
 
 func (c *UrlMapsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165063,7 +165063,7 @@
 
 func (c *UrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165223,7 +165223,7 @@
 
 func (c *UrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165390,7 +165390,7 @@
 
 func (c *UrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165558,7 +165558,7 @@
 
 func (c *UrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165786,7 +165786,7 @@
 
 func (c *UrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -165991,7 +165991,7 @@
 
 func (c *UrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -166148,7 +166148,7 @@
 
 func (c *UrlMapsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -166321,7 +166321,7 @@
 
 func (c *UrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -166480,7 +166480,7 @@
 
 func (c *UrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -166702,7 +166702,7 @@
 
 func (c *VpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -166904,7 +166904,7 @@
 
 func (c *VpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -167074,7 +167074,7 @@
 
 func (c *VpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -167242,7 +167242,7 @@
 
 func (c *VpnGatewaysGetStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -167419,7 +167419,7 @@
 
 func (c *VpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -167648,7 +167648,7 @@
 
 func (c *VpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -167862,7 +167862,7 @@
 
 func (c *VpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -168030,7 +168030,7 @@
 
 func (c *VpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -168262,7 +168262,7 @@
 
 func (c *VpnTunnelsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -168464,7 +168464,7 @@
 
 func (c *VpnTunnelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -168634,7 +168634,7 @@
 
 func (c *VpnTunnelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -168811,7 +168811,7 @@
 
 func (c *VpnTunnelsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169041,7 +169041,7 @@
 
 func (c *VpnTunnelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169255,7 +169255,7 @@
 
 func (c *VpnTunnelsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169423,7 +169423,7 @@
 
 func (c *VpnTunnelsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169586,7 +169586,7 @@
 
 func (c *ZoneOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169723,7 +169723,7 @@
 
 func (c *ZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -169953,7 +169953,7 @@
 
 func (c *ZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -170153,7 +170153,7 @@
 
 func (c *ZoneOperationsWaitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -170318,7 +170318,7 @@
 
 func (c *ZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -170537,7 +170537,7 @@
 
 func (c *ZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go
index 461231f..44bc0b8 100644
--- a/compute/v0.beta/compute-gen.go
+++ b/compute/v0.beta/compute-gen.go
@@ -41153,7 +41153,7 @@
 
 func (c *AcceleratorTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41347,7 +41347,7 @@
 
 func (c *AcceleratorTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41576,7 +41576,7 @@
 
 func (c *AcceleratorTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41839,7 +41839,7 @@
 
 func (c *AddressesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42042,7 +42042,7 @@
 
 func (c *AddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42212,7 +42212,7 @@
 
 func (c *AddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42390,7 +42390,7 @@
 
 func (c *AddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42620,7 +42620,7 @@
 
 func (c *AddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42834,7 +42834,7 @@
 
 func (c *AddressesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43002,7 +43002,7 @@
 
 func (c *AddressesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43234,7 +43234,7 @@
 
 func (c *AutoscalersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43436,7 +43436,7 @@
 
 func (c *AutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43606,7 +43606,7 @@
 
 func (c *AutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43782,7 +43782,7 @@
 
 func (c *AutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44011,7 +44011,7 @@
 
 func (c *AutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44231,7 +44231,7 @@
 
 func (c *AutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44396,7 +44396,7 @@
 
 func (c *AutoscalersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44584,7 +44584,7 @@
 
 func (c *AutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44766,7 +44766,7 @@
 
 func (c *BackendBucketsAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44939,7 +44939,7 @@
 
 func (c *BackendBucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45107,7 +45107,7 @@
 
 func (c *BackendBucketsDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45272,7 +45272,7 @@
 
 func (c *BackendBucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45438,7 +45438,7 @@
 
 func (c *BackendBucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45656,7 +45656,7 @@
 
 func (c *BackendBucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45860,7 +45860,7 @@
 
 func (c *BackendBucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46036,7 +46036,7 @@
 
 func (c *BackendBucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46212,7 +46212,7 @@
 
 func (c *BackendServicesAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46439,7 +46439,7 @@
 
 func (c *BackendServicesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46640,7 +46640,7 @@
 
 func (c *BackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46808,7 +46808,7 @@
 
 func (c *BackendServicesDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46974,7 +46974,7 @@
 
 func (c *BackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47123,7 +47123,7 @@
 
 func (c *BackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47296,7 +47296,7 @@
 
 func (c *BackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47515,7 +47515,7 @@
 
 func (c *BackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47722,7 +47722,7 @@
 
 func (c *BackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47898,7 +47898,7 @@
 
 func (c *BackendServicesSetSecurityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48054,7 +48054,7 @@
 
 func (c *BackendServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48230,7 +48230,7 @@
 
 func (c *BackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48458,7 +48458,7 @@
 
 func (c *DiskTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48654,7 +48654,7 @@
 
 func (c *DiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48884,7 +48884,7 @@
 
 func (c *DiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49099,7 +49099,7 @@
 
 func (c *DisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49336,7 +49336,7 @@
 
 func (c *DisksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49550,7 +49550,7 @@
 
 func (c *DisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49744,7 +49744,7 @@
 
 func (c *DisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49914,7 +49914,7 @@
 
 func (c *DisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50090,7 +50090,7 @@
 
 func (c *DisksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50284,7 +50284,7 @@
 
 func (c *DisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50519,7 +50519,7 @@
 
 func (c *DisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50732,7 +50732,7 @@
 
 func (c *DisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50919,7 +50919,7 @@
 
 func (c *DisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51088,7 +51088,7 @@
 
 func (c *DisksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51271,7 +51271,7 @@
 
 func (c *DisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51439,7 +51439,7 @@
 
 func (c *DisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51618,7 +51618,7 @@
 
 func (c *ExternalVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51777,7 +51777,7 @@
 
 func (c *ExternalVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51943,7 +51943,7 @@
 
 func (c *ExternalVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52161,7 +52161,7 @@
 
 func (c *ExternalVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52345,7 +52345,7 @@
 
 func (c *ExternalVpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52497,7 +52497,7 @@
 
 func (c *ExternalVpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52668,7 +52668,7 @@
 
 func (c *FirewallsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52827,7 +52827,7 @@
 
 func (c *FirewallsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52994,7 +52994,7 @@
 
 func (c *FirewallsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53213,7 +53213,7 @@
 
 func (c *FirewallsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53418,7 +53418,7 @@
 
 func (c *FirewallsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53575,7 +53575,7 @@
 
 func (c *FirewallsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53750,7 +53750,7 @@
 
 func (c *FirewallsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53978,7 +53978,7 @@
 
 func (c *ForwardingRulesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54181,7 +54181,7 @@
 
 func (c *ForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54351,7 +54351,7 @@
 
 func (c *ForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54529,7 +54529,7 @@
 
 func (c *ForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54760,7 +54760,7 @@
 
 func (c *ForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54976,7 +54976,7 @@
 
 func (c *ForwardingRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55164,7 +55164,7 @@
 
 func (c *ForwardingRulesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55353,7 +55353,7 @@
 
 func (c *ForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55521,7 +55521,7 @@
 
 func (c *ForwardingRulesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55701,7 +55701,7 @@
 
 func (c *GlobalAddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55861,7 +55861,7 @@
 
 func (c *GlobalAddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56028,7 +56028,7 @@
 
 func (c *GlobalAddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56247,7 +56247,7 @@
 
 func (c *GlobalAddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56431,7 +56431,7 @@
 
 func (c *GlobalAddressesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56583,7 +56583,7 @@
 
 func (c *GlobalAddressesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56754,7 +56754,7 @@
 
 func (c *GlobalForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56914,7 +56914,7 @@
 
 func (c *GlobalForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57081,7 +57081,7 @@
 
 func (c *GlobalForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57300,7 +57300,7 @@
 
 func (c *GlobalForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57505,7 +57505,7 @@
 
 func (c *GlobalForwardingRulesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57663,7 +57663,7 @@
 
 func (c *GlobalForwardingRulesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57836,7 +57836,7 @@
 
 func (c *GlobalForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57993,7 +57993,7 @@
 
 func (c *GlobalForwardingRulesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58217,7 +58217,7 @@
 
 func (c *GlobalOperationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58399,7 +58399,7 @@
 
 func (c *GlobalOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58526,7 +58526,7 @@
 
 func (c *GlobalOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58745,7 +58745,7 @@
 
 func (c *GlobalOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58999,7 +58999,7 @@
 
 func (c *HealthChecksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59199,7 +59199,7 @@
 
 func (c *HealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59358,7 +59358,7 @@
 
 func (c *HealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59524,7 +59524,7 @@
 
 func (c *HealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59742,7 +59742,7 @@
 
 func (c *HealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59946,7 +59946,7 @@
 
 func (c *HealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60103,7 +60103,7 @@
 
 func (c *HealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60276,7 +60276,7 @@
 
 func (c *HealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60451,7 +60451,7 @@
 
 func (c *HttpHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60611,7 +60611,7 @@
 
 func (c *HttpHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60778,7 +60778,7 @@
 
 func (c *HttpHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60997,7 +60997,7 @@
 
 func (c *HttpHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61202,7 +61202,7 @@
 
 func (c *HttpHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61359,7 +61359,7 @@
 
 func (c *HttpHealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61533,7 +61533,7 @@
 
 func (c *HttpHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61707,7 +61707,7 @@
 
 func (c *HttpsHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61866,7 +61866,7 @@
 
 func (c *HttpsHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62032,7 +62032,7 @@
 
 func (c *HttpsHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62250,7 +62250,7 @@
 
 func (c *HttpsHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62454,7 +62454,7 @@
 
 func (c *HttpsHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62611,7 +62611,7 @@
 
 func (c *HttpsHealthChecksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62784,7 +62784,7 @@
 
 func (c *HttpsHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62959,7 +62959,7 @@
 
 func (c *ImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63130,7 +63130,7 @@
 
 func (c *ImagesDeprecateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63297,7 +63297,7 @@
 
 func (c *ImagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63455,7 +63455,7 @@
 
 func (c *ImagesGetFromFamilyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63620,7 +63620,7 @@
 
 func (c *ImagesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63799,7 +63799,7 @@
 
 func (c *ImagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64031,7 +64031,7 @@
 
 func (c *ImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64215,7 +64215,7 @@
 
 func (c *ImagesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64368,7 +64368,7 @@
 
 func (c *ImagesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64520,7 +64520,7 @@
 
 func (c *ImagesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64709,7 +64709,7 @@
 
 func (c *InstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64943,7 +64943,7 @@
 
 func (c *InstanceGroupManagersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65131,7 +65131,7 @@
 
 func (c *InstanceGroupManagersApplyUpdatesToInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65315,7 +65315,7 @@
 
 func (c *InstanceGroupManagersCreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65500,7 +65500,7 @@
 
 func (c *InstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65691,7 +65691,7 @@
 
 func (c *InstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65867,7 +65867,7 @@
 
 func (c *InstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66050,7 +66050,7 @@
 
 func (c *InstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66279,7 +66279,7 @@
 
 func (c *InstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66538,7 +66538,7 @@
 
 func (c *InstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66762,7 +66762,7 @@
 
 func (c *InstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66960,7 +66960,7 @@
 
 func (c *InstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67164,7 +67164,7 @@
 
 func (c *InstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67363,7 +67363,7 @@
 
 func (c *InstanceGroupManagersResizeAdvancedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67549,7 +67549,7 @@
 
 func (c *InstanceGroupManagersSetAutoHealingPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67736,7 +67736,7 @@
 
 func (c *InstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67927,7 +67927,7 @@
 
 func (c *InstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68093,7 +68093,7 @@
 
 func (c *InstanceGroupManagersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68280,7 +68280,7 @@
 
 func (c *InstanceGroupManagersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68467,7 +68467,7 @@
 
 func (c *InstanceGroupsAddInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68701,7 +68701,7 @@
 
 func (c *InstanceGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68905,7 +68905,7 @@
 
 func (c *InstanceGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69073,7 +69073,7 @@
 
 func (c *InstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69248,7 +69248,7 @@
 
 func (c *InstanceGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69477,7 +69477,7 @@
 
 func (c *InstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69733,7 +69733,7 @@
 
 func (c *InstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69963,7 +69963,7 @@
 
 func (c *InstanceGroupsRemoveInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70148,7 +70148,7 @@
 
 func (c *InstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70314,7 +70314,7 @@
 
 func (c *InstanceGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70496,7 +70496,7 @@
 
 func (c *InstanceTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70656,7 +70656,7 @@
 
 func (c *InstanceTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70821,7 +70821,7 @@
 
 func (c *InstanceTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70997,7 +70997,7 @@
 
 func (c *InstanceTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71217,7 +71217,7 @@
 
 func (c *InstanceTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71401,7 +71401,7 @@
 
 func (c *InstanceTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71553,7 +71553,7 @@
 
 func (c *InstanceTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71729,7 +71729,7 @@
 
 func (c *InstancesAddAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71974,7 +71974,7 @@
 
 func (c *InstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72190,7 +72190,7 @@
 
 func (c *InstancesAttachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72382,7 +72382,7 @@
 
 func (c *InstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72562,7 +72562,7 @@
 
 func (c *InstancesDeleteAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72755,7 +72755,7 @@
 
 func (c *InstancesDetachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72933,7 +72933,7 @@
 
 func (c *InstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73115,7 +73115,7 @@
 
 func (c *InstancesGetGuestAttributesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73301,7 +73301,7 @@
 
 func (c *InstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73494,7 +73494,7 @@
 
 func (c *InstancesGetSerialPortOutputCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73677,7 +73677,7 @@
 
 func (c *InstancesGetShieldedInstanceIdentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73845,7 +73845,7 @@
 
 func (c *InstancesGetShieldedVmIdentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74038,7 +74038,7 @@
 
 func (c *InstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74273,7 +74273,7 @@
 
 func (c *InstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74541,7 +74541,7 @@
 
 func (c *InstancesListReferrersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74763,7 +74763,7 @@
 
 func (c *InstancesResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74943,7 +74943,7 @@
 
 func (c *InstancesResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75135,7 +75135,7 @@
 
 func (c *InstancesSetDeletionProtectionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75321,7 +75321,7 @@
 
 func (c *InstancesSetDiskAutoDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75497,7 +75497,7 @@
 
 func (c *InstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75680,7 +75680,7 @@
 
 func (c *InstancesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75868,7 +75868,7 @@
 
 func (c *InstancesSetMachineResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76056,7 +76056,7 @@
 
 func (c *InstancesSetMachineTypeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76244,7 +76244,7 @@
 
 func (c *InstancesSetMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76433,7 +76433,7 @@
 
 func (c *InstancesSetMinCpuPlatformCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76621,7 +76621,7 @@
 
 func (c *InstancesSetSchedulingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76809,7 +76809,7 @@
 
 func (c *InstancesSetServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76999,7 +76999,7 @@
 
 func (c *InstancesSetShieldedInstanceIntegrityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77189,7 +77189,7 @@
 
 func (c *InstancesSetShieldedVmIntegrityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77377,7 +77377,7 @@
 
 func (c *InstancesSetTagsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77543,7 +77543,7 @@
 
 func (c *InstancesSimulateMaintenanceEventCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77717,7 +77717,7 @@
 
 func (c *InstancesStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77897,7 +77897,7 @@
 
 func (c *InstancesStartWithEncryptionKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78088,7 +78088,7 @@
 
 func (c *InstancesStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78278,7 +78278,7 @@
 
 func (c *InstancesSuspendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78443,7 +78443,7 @@
 
 func (c *InstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78630,7 +78630,7 @@
 
 func (c *InstancesUpdateAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78826,7 +78826,7 @@
 
 func (c *InstancesUpdateDisplayDeviceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79015,7 +79015,7 @@
 
 func (c *InstancesUpdateNetworkInterfaceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79212,7 +79212,7 @@
 
 func (c *InstancesUpdateShieldedInstanceConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79401,7 +79401,7 @@
 
 func (c *InstancesUpdateShieldedVmConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79637,7 +79637,7 @@
 
 func (c *InterconnectAttachmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79840,7 +79840,7 @@
 
 func (c *InterconnectAttachmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80009,7 +80009,7 @@
 
 func (c *InterconnectAttachmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80186,7 +80186,7 @@
 
 func (c *InterconnectAttachmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80415,7 +80415,7 @@
 
 func (c *InterconnectAttachmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80630,7 +80630,7 @@
 
 func (c *InterconnectAttachmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80818,7 +80818,7 @@
 
 func (c *InterconnectAttachmentsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80986,7 +80986,7 @@
 
 func (c *InterconnectAttachmentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81158,7 +81158,7 @@
 
 func (c *InterconnectLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81376,7 +81376,7 @@
 
 func (c *InterconnectLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81576,7 +81576,7 @@
 
 func (c *InterconnectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81735,7 +81735,7 @@
 
 func (c *InterconnectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81892,7 +81892,7 @@
 
 func (c *InterconnectsGetDiagnosticsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82059,7 +82059,7 @@
 
 func (c *InterconnectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82277,7 +82277,7 @@
 
 func (c *InterconnectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82481,7 +82481,7 @@
 
 func (c *InterconnectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82639,7 +82639,7 @@
 
 func (c *InterconnectsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82791,7 +82791,7 @@
 
 func (c *InterconnectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82954,7 +82954,7 @@
 
 func (c *LicenseCodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83119,7 +83119,7 @@
 
 func (c *LicensesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83278,7 +83278,7 @@
 
 func (c *LicensesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83443,7 +83443,7 @@
 
 func (c *LicensesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83614,7 +83614,7 @@
 
 func (c *LicensesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83840,7 +83840,7 @@
 
 func (c *LicensesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84024,7 +84024,7 @@
 
 func (c *LicensesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84247,7 +84247,7 @@
 
 func (c *MachineTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84443,7 +84443,7 @@
 
 func (c *MachineTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84673,7 +84673,7 @@
 
 func (c *MachineTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84935,7 +84935,7 @@
 
 func (c *NetworkEndpointGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85141,7 +85141,7 @@
 
 func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85327,7 +85327,7 @@
 
 func (c *NetworkEndpointGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85505,7 +85505,7 @@
 
 func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85681,7 +85681,7 @@
 
 func (c *NetworkEndpointGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85856,7 +85856,7 @@
 
 func (c *NetworkEndpointGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86085,7 +86085,7 @@
 
 func (c *NetworkEndpointGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86341,7 +86341,7 @@
 
 func (c *NetworkEndpointGroupsListNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86549,7 +86549,7 @@
 
 func (c *NetworkEndpointGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86730,7 +86730,7 @@
 
 func (c *NetworksAddPeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86905,7 +86905,7 @@
 
 func (c *NetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87065,7 +87065,7 @@
 
 func (c *NetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87231,7 +87231,7 @@
 
 func (c *NetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87450,7 +87450,7 @@
 
 func (c *NetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87731,7 +87731,7 @@
 
 func (c *NetworksListPeeringRoutesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87967,7 +87967,7 @@
 
 func (c *NetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88143,7 +88143,7 @@
 
 func (c *NetworksRemovePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88317,7 +88317,7 @@
 
 func (c *NetworksSwitchToCustomModeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88466,7 +88466,7 @@
 
 func (c *NetworksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88641,7 +88641,7 @@
 
 func (c *NetworksUpdatePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88819,7 +88819,7 @@
 
 func (c *NodeGroupsAddNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89056,7 +89056,7 @@
 
 func (c *NodeGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89258,7 +89258,7 @@
 
 func (c *NodeGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89437,7 +89437,7 @@
 
 func (c *NodeGroupsDeleteNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89616,7 +89616,7 @@
 
 func (c *NodeGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89792,7 +89792,7 @@
 
 func (c *NodeGroupsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89976,7 +89976,7 @@
 
 func (c *NodeGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90214,7 +90214,7 @@
 
 func (c *NodeGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90469,7 +90469,7 @@
 
 func (c *NodeGroupsListNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90670,7 +90670,7 @@
 
 func (c *NodeGroupsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90852,7 +90852,7 @@
 
 func (c *NodeGroupsSetNodeTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91020,7 +91020,7 @@
 
 func (c *NodeGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91252,7 +91252,7 @@
 
 func (c *NodeTemplatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91454,7 +91454,7 @@
 
 func (c *NodeTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91624,7 +91624,7 @@
 
 func (c *NodeTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91800,7 +91800,7 @@
 
 func (c *NodeTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91983,7 +91983,7 @@
 
 func (c *NodeTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92212,7 +92212,7 @@
 
 func (c *NodeTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92407,7 +92407,7 @@
 
 func (c *NodeTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92570,7 +92570,7 @@
 
 func (c *NodeTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92802,7 +92802,7 @@
 
 func (c *NodeTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92997,7 +92997,7 @@
 
 func (c *NodeTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93226,7 +93226,7 @@
 
 func (c *NodeTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93488,7 +93488,7 @@
 
 func (c *PacketMirroringsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93690,7 +93690,7 @@
 
 func (c *PacketMirroringsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93859,7 +93859,7 @@
 
 func (c *PacketMirroringsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94036,7 +94036,7 @@
 
 func (c *PacketMirroringsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94266,7 +94266,7 @@
 
 func (c *PacketMirroringsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94481,7 +94481,7 @@
 
 func (c *PacketMirroringsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94649,7 +94649,7 @@
 
 func (c *PacketMirroringsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94826,7 +94826,7 @@
 
 func (c *ProjectsDisableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94984,7 +94984,7 @@
 
 func (c *ProjectsDisableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95147,7 +95147,7 @@
 
 func (c *ProjectsEnableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95306,7 +95306,7 @@
 
 func (c *ProjectsEnableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95462,7 +95462,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95609,7 +95609,7 @@
 
 func (c *ProjectsGetXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95818,7 +95818,7 @@
 
 func (c *ProjectsGetXpnResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96061,7 +96061,7 @@
 
 func (c *ProjectsListXpnHostsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96265,7 +96265,7 @@
 
 func (c *ProjectsMoveDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96430,7 +96430,7 @@
 
 func (c *ProjectsMoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96597,7 +96597,7 @@
 
 func (c *ProjectsSetCommonInstanceMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96764,7 +96764,7 @@
 
 func (c *ProjectsSetDefaultNetworkTierCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96932,7 +96932,7 @@
 
 func (c *ProjectsSetUsageExportBucketCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97102,7 +97102,7 @@
 
 func (c *RegionAutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97271,7 +97271,7 @@
 
 func (c *RegionAutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97447,7 +97447,7 @@
 
 func (c *RegionAutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97676,7 +97676,7 @@
 
 func (c *RegionAutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97896,7 +97896,7 @@
 
 func (c *RegionAutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98061,7 +98061,7 @@
 
 func (c *RegionAutoscalersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98249,7 +98249,7 @@
 
 func (c *RegionAutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98431,7 +98431,7 @@
 
 func (c *RegionBackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98600,7 +98600,7 @@
 
 func (c *RegionBackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98759,7 +98759,7 @@
 
 func (c *RegionBackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98942,7 +98942,7 @@
 
 func (c *RegionBackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99172,7 +99172,7 @@
 
 func (c *RegionBackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99389,7 +99389,7 @@
 
 func (c *RegionBackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99557,7 +99557,7 @@
 
 func (c *RegionBackendServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99743,7 +99743,7 @@
 
 func (c *RegionBackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99979,7 +99979,7 @@
 
 func (c *RegionCommitmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100174,7 +100174,7 @@
 
 func (c *RegionCommitmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100350,7 +100350,7 @@
 
 func (c *RegionCommitmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100579,7 +100579,7 @@
 
 func (c *RegionCommitmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100793,7 +100793,7 @@
 
 func (c *RegionCommitmentsUpdateReservationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100971,7 +100971,7 @@
 
 func (c *RegionDiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101200,7 +101200,7 @@
 
 func (c *RegionDiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101415,7 +101415,7 @@
 
 func (c *RegionDisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101602,7 +101602,7 @@
 
 func (c *RegionDisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101790,7 +101790,7 @@
 
 func (c *RegionDisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101958,7 +101958,7 @@
 
 func (c *RegionDisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102134,7 +102134,7 @@
 
 func (c *RegionDisksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102324,7 +102324,7 @@
 
 func (c *RegionDisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102558,7 +102558,7 @@
 
 func (c *RegionDisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102771,7 +102771,7 @@
 
 func (c *RegionDisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102958,7 +102958,7 @@
 
 func (c *RegionDisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103127,7 +103127,7 @@
 
 func (c *RegionDisksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103309,7 +103309,7 @@
 
 func (c *RegionDisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103477,7 +103477,7 @@
 
 func (c *RegionDisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103658,7 +103658,7 @@
 
 func (c *RegionHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103828,7 +103828,7 @@
 
 func (c *RegionHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104005,7 +104005,7 @@
 
 func (c *RegionHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104234,7 +104234,7 @@
 
 func (c *RegionHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104449,7 +104449,7 @@
 
 func (c *RegionHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104637,7 +104637,7 @@
 
 func (c *RegionHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104839,7 +104839,7 @@
 
 func (c *RegionInstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105005,7 +105005,7 @@
 
 func (c *RegionInstanceGroupManagersApplyUpdatesToInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105189,7 +105189,7 @@
 
 func (c *RegionInstanceGroupManagersCreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105372,7 +105372,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105564,7 +105564,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105739,7 +105739,7 @@
 
 func (c *RegionInstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105921,7 +105921,7 @@
 
 func (c *RegionInstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106150,7 +106150,7 @@
 
 func (c *RegionInstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106406,7 +106406,7 @@
 
 func (c *RegionInstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106630,7 +106630,7 @@
 
 func (c *RegionInstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106828,7 +106828,7 @@
 
 func (c *RegionInstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107024,7 +107024,7 @@
 
 func (c *RegionInstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107212,7 +107212,7 @@
 
 func (c *RegionInstanceGroupManagersSetAutoHealingPoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107399,7 +107399,7 @@
 
 func (c *RegionInstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107585,7 +107585,7 @@
 
 func (c *RegionInstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107751,7 +107751,7 @@
 
 func (c *RegionInstanceGroupManagersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107938,7 +107938,7 @@
 
 func (c *RegionInstanceGroupManagersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108113,7 +108113,7 @@
 
 func (c *RegionInstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108340,7 +108340,7 @@
 
 func (c *RegionInstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108599,7 +108599,7 @@
 
 func (c *RegionInstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108825,7 +108825,7 @@
 
 func (c *RegionInstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108991,7 +108991,7 @@
 
 func (c *RegionInstanceGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109154,7 +109154,7 @@
 
 func (c *RegionOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109291,7 +109291,7 @@
 
 func (c *RegionOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109521,7 +109521,7 @@
 
 func (c *RegionOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109732,7 +109732,7 @@
 
 func (c *RegionSslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109902,7 +109902,7 @@
 
 func (c *RegionSslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110079,7 +110079,7 @@
 
 func (c *RegionSslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110309,7 +110309,7 @@
 
 func (c *RegionSslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110520,7 +110520,7 @@
 
 func (c *RegionTargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110690,7 +110690,7 @@
 
 func (c *RegionTargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110867,7 +110867,7 @@
 
 func (c *RegionTargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111097,7 +111097,7 @@
 
 func (c *RegionTargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111310,7 +111310,7 @@
 
 func (c *RegionTargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111495,7 +111495,7 @@
 
 func (c *RegionTargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111665,7 +111665,7 @@
 
 func (c *RegionTargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111842,7 +111842,7 @@
 
 func (c *RegionTargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112072,7 +112072,7 @@
 
 func (c *RegionTargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112285,7 +112285,7 @@
 
 func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112472,7 +112472,7 @@
 
 func (c *RegionTargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112645,7 +112645,7 @@
 
 func (c *RegionUrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112815,7 +112815,7 @@
 
 func (c *RegionUrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112980,7 +112980,7 @@
 
 func (c *RegionUrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113147,7 +113147,7 @@
 
 func (c *RegionUrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113386,7 +113386,7 @@
 
 func (c *RegionUrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113589,7 +113589,7 @@
 
 func (c *RegionUrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113764,7 +113764,7 @@
 
 func (c *RegionUrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113933,7 +113933,7 @@
 
 func (c *RegionUrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114105,7 +114105,7 @@
 
 func (c *RegionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114324,7 +114324,7 @@
 
 func (c *RegionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114577,7 +114577,7 @@
 
 func (c *ReservationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114779,7 +114779,7 @@
 
 func (c *ReservationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114948,7 +114948,7 @@
 
 func (c *ReservationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115124,7 +115124,7 @@
 
 func (c *ReservationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115307,7 +115307,7 @@
 
 func (c *ReservationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115537,7 +115537,7 @@
 
 func (c *ReservationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115751,7 +115751,7 @@
 
 func (c *ReservationsResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115920,7 +115920,7 @@
 
 func (c *ReservationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116083,7 +116083,7 @@
 
 func (c *ReservationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116315,7 +116315,7 @@
 
 func (c *ResourcePoliciesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116517,7 +116517,7 @@
 
 func (c *ResourcePoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116686,7 +116686,7 @@
 
 func (c *ResourcePoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116862,7 +116862,7 @@
 
 func (c *ResourcePoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117044,7 +117044,7 @@
 
 func (c *ResourcePoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117274,7 +117274,7 @@
 
 func (c *ResourcePoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117469,7 +117469,7 @@
 
 func (c *ResourcePoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117632,7 +117632,7 @@
 
 func (c *ResourcePoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117864,7 +117864,7 @@
 
 func (c *RoutersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118066,7 +118066,7 @@
 
 func (c *RoutersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118236,7 +118236,7 @@
 
 func (c *RoutersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118476,7 +118476,7 @@
 
 func (c *RoutersGetNatMappingInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118693,7 +118693,7 @@
 
 func (c *RoutersGetRouterStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118870,7 +118870,7 @@
 
 func (c *RoutersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119099,7 +119099,7 @@
 
 func (c *RoutersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119314,7 +119314,7 @@
 
 func (c *RoutersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119483,7 +119483,7 @@
 
 func (c *RoutersPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119647,7 +119647,7 @@
 
 func (c *RoutersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119833,7 +119833,7 @@
 
 func (c *RoutersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120017,7 +120017,7 @@
 
 func (c *RoutesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120177,7 +120177,7 @@
 
 func (c *RoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120344,7 +120344,7 @@
 
 func (c *RoutesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120563,7 +120563,7 @@
 
 func (c *RoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120746,7 +120746,7 @@
 
 func (c *RoutesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120906,7 +120906,7 @@
 
 func (c *SecurityPoliciesAddRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121080,7 +121080,7 @@
 
 func (c *SecurityPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121238,7 +121238,7 @@
 
 func (c *SecurityPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121402,7 +121402,7 @@
 
 func (c *SecurityPoliciesGetRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121580,7 +121580,7 @@
 
 func (c *SecurityPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121803,7 +121803,7 @@
 
 func (c *SecurityPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122057,7 +122057,7 @@
 
 func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122240,7 +122240,7 @@
 
 func (c *SecurityPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122411,7 +122411,7 @@
 
 func (c *SecurityPoliciesPatchRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122579,7 +122579,7 @@
 
 func (c *SecurityPoliciesRemoveRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122730,7 +122730,7 @@
 
 func (c *SecurityPoliciesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122882,7 +122882,7 @@
 
 func (c *SecurityPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123059,7 +123059,7 @@
 
 func (c *SnapshotsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123219,7 +123219,7 @@
 
 func (c *SnapshotsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123384,7 +123384,7 @@
 
 func (c *SnapshotsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123609,7 +123609,7 @@
 
 func (c *SnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123793,7 +123793,7 @@
 
 func (c *SnapshotsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123946,7 +123946,7 @@
 
 func (c *SnapshotsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124098,7 +124098,7 @@
 
 func (c *SnapshotsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124322,7 +124322,7 @@
 
 func (c *SslCertificatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124522,7 +124522,7 @@
 
 func (c *SslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124681,7 +124681,7 @@
 
 func (c *SslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124847,7 +124847,7 @@
 
 func (c *SslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125065,7 +125065,7 @@
 
 func (c *SslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125248,7 +125248,7 @@
 
 func (c *SslCertificatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125419,7 +125419,7 @@
 
 func (c *SslPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125576,7 +125576,7 @@
 
 func (c *SslPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125741,7 +125741,7 @@
 
 func (c *SslPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125959,7 +125959,7 @@
 
 func (c *SslPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126213,7 +126213,7 @@
 
 func (c *SslPoliciesListAvailableFeaturesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126396,7 +126396,7 @@
 
 func (c *SslPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126552,7 +126552,7 @@
 
 func (c *SslPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126775,7 +126775,7 @@
 
 func (c *SubnetworksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126977,7 +126977,7 @@
 
 func (c *SubnetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127156,7 +127156,7 @@
 
 func (c *SubnetworksExpandIpCidrRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127334,7 +127334,7 @@
 
 func (c *SubnetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127510,7 +127510,7 @@
 
 func (c *SubnetworksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127692,7 +127692,7 @@
 
 func (c *SubnetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127921,7 +127921,7 @@
 
 func (c *SubnetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128185,7 +128185,7 @@
 
 func (c *SubnetworksListUsableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128407,7 +128407,7 @@
 
 func (c *SubnetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128582,7 +128582,7 @@
 
 func (c *SubnetworksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128765,7 +128765,7 @@
 
 func (c *SubnetworksSetPrivateIpGoogleAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128933,7 +128933,7 @@
 
 func (c *SubnetworksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129166,7 +129166,7 @@
 
 func (c *TargetHttpProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129367,7 +129367,7 @@
 
 func (c *TargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129527,7 +129527,7 @@
 
 func (c *TargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129694,7 +129694,7 @@
 
 func (c *TargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129913,7 +129913,7 @@
 
 func (c *TargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130116,7 +130116,7 @@
 
 func (c *TargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130273,7 +130273,7 @@
 
 func (c *TargetHttpProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130497,7 +130497,7 @@
 
 func (c *TargetHttpsProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130697,7 +130697,7 @@
 
 func (c *TargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130856,7 +130856,7 @@
 
 func (c *TargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131022,7 +131022,7 @@
 
 func (c *TargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131240,7 +131240,7 @@
 
 func (c *TargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131442,7 +131442,7 @@
 
 func (c *TargetHttpsProxiesSetQuicOverrideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131617,7 +131617,7 @@
 
 func (c *TargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131796,7 +131796,7 @@
 
 func (c *TargetHttpsProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -131971,7 +131971,7 @@
 
 func (c *TargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132128,7 +132128,7 @@
 
 func (c *TargetHttpsProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132352,7 +132352,7 @@
 
 func (c *TargetInstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132555,7 +132555,7 @@
 
 func (c *TargetInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132726,7 +132726,7 @@
 
 func (c *TargetInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -132904,7 +132904,7 @@
 
 func (c *TargetInstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133135,7 +133135,7 @@
 
 func (c *TargetInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133329,7 +133329,7 @@
 
 func (c *TargetInstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133513,7 +133513,7 @@
 
 func (c *TargetPoolsAddHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133701,7 +133701,7 @@
 
 func (c *TargetPoolsAddInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -133938,7 +133938,7 @@
 
 func (c *TargetPoolsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134141,7 +134141,7 @@
 
 func (c *TargetPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134312,7 +134312,7 @@
 
 func (c *TargetPoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134473,7 +134473,7 @@
 
 func (c *TargetPoolsGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134656,7 +134656,7 @@
 
 func (c *TargetPoolsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -134886,7 +134886,7 @@
 
 func (c *TargetPoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135100,7 +135100,7 @@
 
 func (c *TargetPoolsRemoveHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135288,7 +135288,7 @@
 
 func (c *TargetPoolsRemoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135483,7 +135483,7 @@
 
 func (c *TargetPoolsSetBackupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135657,7 +135657,7 @@
 
 func (c *TargetPoolsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135836,7 +135836,7 @@
 
 func (c *TargetSslProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -135995,7 +135995,7 @@
 
 func (c *TargetSslProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136161,7 +136161,7 @@
 
 func (c *TargetSslProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136379,7 +136379,7 @@
 
 func (c *TargetSslProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136581,7 +136581,7 @@
 
 func (c *TargetSslProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136757,7 +136757,7 @@
 
 func (c *TargetSslProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -136933,7 +136933,7 @@
 
 func (c *TargetSslProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137112,7 +137112,7 @@
 
 func (c *TargetSslProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137268,7 +137268,7 @@
 
 func (c *TargetSslProxiesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137438,7 +137438,7 @@
 
 func (c *TargetTcpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137597,7 +137597,7 @@
 
 func (c *TargetTcpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137763,7 +137763,7 @@
 
 func (c *TargetTcpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -137981,7 +137981,7 @@
 
 func (c *TargetTcpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138183,7 +138183,7 @@
 
 func (c *TargetTcpProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138359,7 +138359,7 @@
 
 func (c *TargetTcpProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138586,7 +138586,7 @@
 
 func (c *TargetVpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138788,7 +138788,7 @@
 
 func (c *TargetVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -138958,7 +138958,7 @@
 
 func (c *TargetVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139135,7 +139135,7 @@
 
 func (c *TargetVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139365,7 +139365,7 @@
 
 func (c *TargetVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139579,7 +139579,7 @@
 
 func (c *TargetVpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139747,7 +139747,7 @@
 
 func (c *TargetVpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -139980,7 +139980,7 @@
 
 func (c *UrlMapsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140181,7 +140181,7 @@
 
 func (c *UrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140341,7 +140341,7 @@
 
 func (c *UrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140508,7 +140508,7 @@
 
 func (c *UrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140676,7 +140676,7 @@
 
 func (c *UrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -140904,7 +140904,7 @@
 
 func (c *UrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141109,7 +141109,7 @@
 
 func (c *UrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141266,7 +141266,7 @@
 
 func (c *UrlMapsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141439,7 +141439,7 @@
 
 func (c *UrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141598,7 +141598,7 @@
 
 func (c *UrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -141820,7 +141820,7 @@
 
 func (c *VpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142022,7 +142022,7 @@
 
 func (c *VpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142192,7 +142192,7 @@
 
 func (c *VpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142360,7 +142360,7 @@
 
 func (c *VpnGatewaysGetStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142537,7 +142537,7 @@
 
 func (c *VpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142766,7 +142766,7 @@
 
 func (c *VpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -142980,7 +142980,7 @@
 
 func (c *VpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143216,7 +143216,7 @@
 
 func (c *VpnTunnelsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143418,7 +143418,7 @@
 
 func (c *VpnTunnelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143588,7 +143588,7 @@
 
 func (c *VpnTunnelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143765,7 +143765,7 @@
 
 func (c *VpnTunnelsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -143995,7 +143995,7 @@
 
 func (c *VpnTunnelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144209,7 +144209,7 @@
 
 func (c *VpnTunnelsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144377,7 +144377,7 @@
 
 func (c *VpnTunnelsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144540,7 +144540,7 @@
 
 func (c *ZoneOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144677,7 +144677,7 @@
 
 func (c *ZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -144907,7 +144907,7 @@
 
 func (c *ZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145110,7 +145110,7 @@
 
 func (c *ZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -145329,7 +145329,7 @@
 
 func (c *ZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go
index de3505e..b25888f 100644
--- a/compute/v1/compute-gen.go
+++ b/compute/v1/compute-gen.go
@@ -38222,7 +38222,7 @@
 
 func (c *AcceleratorTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38416,7 +38416,7 @@
 
 func (c *AcceleratorTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38645,7 +38645,7 @@
 
 func (c *AcceleratorTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38908,7 +38908,7 @@
 
 func (c *AddressesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39111,7 +39111,7 @@
 
 func (c *AddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39281,7 +39281,7 @@
 
 func (c *AddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39459,7 +39459,7 @@
 
 func (c *AddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39689,7 +39689,7 @@
 
 func (c *AddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39951,7 +39951,7 @@
 
 func (c *AutoscalersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40153,7 +40153,7 @@
 
 func (c *AutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40323,7 +40323,7 @@
 
 func (c *AutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40499,7 +40499,7 @@
 
 func (c *AutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40728,7 +40728,7 @@
 
 func (c *AutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40948,7 +40948,7 @@
 
 func (c *AutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41137,7 +41137,7 @@
 
 func (c *AutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41319,7 +41319,7 @@
 
 func (c *BackendBucketsAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41492,7 +41492,7 @@
 
 func (c *BackendBucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41660,7 +41660,7 @@
 
 func (c *BackendBucketsDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41825,7 +41825,7 @@
 
 func (c *BackendBucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41991,7 +41991,7 @@
 
 func (c *BackendBucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42209,7 +42209,7 @@
 
 func (c *BackendBucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42413,7 +42413,7 @@
 
 func (c *BackendBucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42589,7 +42589,7 @@
 
 func (c *BackendBucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42765,7 +42765,7 @@
 
 func (c *BackendServicesAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42992,7 +42992,7 @@
 
 func (c *BackendServicesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43193,7 +43193,7 @@
 
 func (c *BackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43361,7 +43361,7 @@
 
 func (c *BackendServicesDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43527,7 +43527,7 @@
 
 func (c *BackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43676,7 +43676,7 @@
 
 func (c *BackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43849,7 +43849,7 @@
 
 func (c *BackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44068,7 +44068,7 @@
 
 func (c *BackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44275,7 +44275,7 @@
 
 func (c *BackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44451,7 +44451,7 @@
 
 func (c *BackendServicesSetSecurityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44630,7 +44630,7 @@
 
 func (c *BackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44858,7 +44858,7 @@
 
 func (c *DiskTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45054,7 +45054,7 @@
 
 func (c *DiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45284,7 +45284,7 @@
 
 func (c *DiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45499,7 +45499,7 @@
 
 func (c *DisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45736,7 +45736,7 @@
 
 func (c *DisksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45950,7 +45950,7 @@
 
 func (c *DisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46144,7 +46144,7 @@
 
 func (c *DisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46314,7 +46314,7 @@
 
 func (c *DisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46483,7 +46483,7 @@
 
 func (c *DisksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46671,7 +46671,7 @@
 
 func (c *DisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46906,7 +46906,7 @@
 
 func (c *DisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47119,7 +47119,7 @@
 
 func (c *DisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47306,7 +47306,7 @@
 
 func (c *DisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47475,7 +47475,7 @@
 
 func (c *DisksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47658,7 +47658,7 @@
 
 func (c *DisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47826,7 +47826,7 @@
 
 func (c *DisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48005,7 +48005,7 @@
 
 func (c *ExternalVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48164,7 +48164,7 @@
 
 func (c *ExternalVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48330,7 +48330,7 @@
 
 func (c *ExternalVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48548,7 +48548,7 @@
 
 func (c *ExternalVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48732,7 +48732,7 @@
 
 func (c *ExternalVpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48884,7 +48884,7 @@
 
 func (c *ExternalVpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49055,7 +49055,7 @@
 
 func (c *FirewallsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49214,7 +49214,7 @@
 
 func (c *FirewallsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49381,7 +49381,7 @@
 
 func (c *FirewallsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49600,7 +49600,7 @@
 
 func (c *FirewallsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49805,7 +49805,7 @@
 
 func (c *FirewallsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49984,7 +49984,7 @@
 
 func (c *FirewallsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50212,7 +50212,7 @@
 
 func (c *ForwardingRulesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50415,7 +50415,7 @@
 
 func (c *ForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50585,7 +50585,7 @@
 
 func (c *ForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50763,7 +50763,7 @@
 
 func (c *ForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50994,7 +50994,7 @@
 
 func (c *ForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51209,7 +51209,7 @@
 
 func (c *ForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51393,7 +51393,7 @@
 
 func (c *GlobalAddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51553,7 +51553,7 @@
 
 func (c *GlobalAddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51720,7 +51720,7 @@
 
 func (c *GlobalAddressesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51939,7 +51939,7 @@
 
 func (c *GlobalAddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52140,7 +52140,7 @@
 
 func (c *GlobalForwardingRulesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52300,7 +52300,7 @@
 
 func (c *GlobalForwardingRulesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52467,7 +52467,7 @@
 
 func (c *GlobalForwardingRulesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52686,7 +52686,7 @@
 
 func (c *GlobalForwardingRulesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -52890,7 +52890,7 @@
 
 func (c *GlobalForwardingRulesSetTargetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53118,7 +53118,7 @@
 
 func (c *GlobalOperationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53300,7 +53300,7 @@
 
 func (c *GlobalOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53427,7 +53427,7 @@
 
 func (c *GlobalOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53646,7 +53646,7 @@
 
 func (c *GlobalOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -53900,7 +53900,7 @@
 
 func (c *HealthChecksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54100,7 +54100,7 @@
 
 func (c *HealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54259,7 +54259,7 @@
 
 func (c *HealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54425,7 +54425,7 @@
 
 func (c *HealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54643,7 +54643,7 @@
 
 func (c *HealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -54847,7 +54847,7 @@
 
 func (c *HealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55024,7 +55024,7 @@
 
 func (c *HealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55199,7 +55199,7 @@
 
 func (c *HttpHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55359,7 +55359,7 @@
 
 func (c *HttpHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55526,7 +55526,7 @@
 
 func (c *HttpHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55745,7 +55745,7 @@
 
 func (c *HttpHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -55950,7 +55950,7 @@
 
 func (c *HttpHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56128,7 +56128,7 @@
 
 func (c *HttpHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56302,7 +56302,7 @@
 
 func (c *HttpsHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56461,7 +56461,7 @@
 
 func (c *HttpsHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56627,7 +56627,7 @@
 
 func (c *HttpsHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -56845,7 +56845,7 @@
 
 func (c *HttpsHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57049,7 +57049,7 @@
 
 func (c *HttpsHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57226,7 +57226,7 @@
 
 func (c *HttpsHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57401,7 +57401,7 @@
 
 func (c *ImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57572,7 +57572,7 @@
 
 func (c *ImagesDeprecateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57739,7 +57739,7 @@
 
 func (c *ImagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -57897,7 +57897,7 @@
 
 func (c *ImagesGetFromFamilyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58055,7 +58055,7 @@
 
 func (c *ImagesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58228,7 +58228,7 @@
 
 func (c *ImagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58460,7 +58460,7 @@
 
 func (c *ImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58644,7 +58644,7 @@
 
 func (c *ImagesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58797,7 +58797,7 @@
 
 func (c *ImagesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -58949,7 +58949,7 @@
 
 func (c *ImagesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59138,7 +59138,7 @@
 
 func (c *InstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59372,7 +59372,7 @@
 
 func (c *InstanceGroupManagersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59577,7 +59577,7 @@
 
 func (c *InstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59768,7 +59768,7 @@
 
 func (c *InstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -59944,7 +59944,7 @@
 
 func (c *InstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60127,7 +60127,7 @@
 
 func (c *InstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60356,7 +60356,7 @@
 
 func (c *InstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60615,7 +60615,7 @@
 
 func (c *InstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -60818,7 +60818,7 @@
 
 func (c *InstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61016,7 +61016,7 @@
 
 func (c *InstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61220,7 +61220,7 @@
 
 func (c *InstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61407,7 +61407,7 @@
 
 func (c *InstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61598,7 +61598,7 @@
 
 func (c *InstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -61785,7 +61785,7 @@
 
 func (c *InstanceGroupsAddInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62019,7 +62019,7 @@
 
 func (c *InstanceGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62223,7 +62223,7 @@
 
 func (c *InstanceGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62391,7 +62391,7 @@
 
 func (c *InstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62566,7 +62566,7 @@
 
 func (c *InstanceGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -62795,7 +62795,7 @@
 
 func (c *InstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63051,7 +63051,7 @@
 
 func (c *InstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63281,7 +63281,7 @@
 
 func (c *InstanceGroupsRemoveInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63466,7 +63466,7 @@
 
 func (c *InstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63650,7 +63650,7 @@
 
 func (c *InstanceTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63810,7 +63810,7 @@
 
 func (c *InstanceTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -63968,7 +63968,7 @@
 
 func (c *InstanceTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64138,7 +64138,7 @@
 
 func (c *InstanceTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64358,7 +64358,7 @@
 
 func (c *InstanceTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64542,7 +64542,7 @@
 
 func (c *InstanceTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64694,7 +64694,7 @@
 
 func (c *InstanceTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -64870,7 +64870,7 @@
 
 func (c *InstancesAddAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65115,7 +65115,7 @@
 
 func (c *InstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65331,7 +65331,7 @@
 
 func (c *InstancesAttachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65523,7 +65523,7 @@
 
 func (c *InstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65703,7 +65703,7 @@
 
 func (c *InstancesDeleteAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -65896,7 +65896,7 @@
 
 func (c *InstancesDetachDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66074,7 +66074,7 @@
 
 func (c *InstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66256,7 +66256,7 @@
 
 func (c *InstancesGetGuestAttributesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66435,7 +66435,7 @@
 
 func (c *InstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66622,7 +66622,7 @@
 
 func (c *InstancesGetSerialPortOutputCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66805,7 +66805,7 @@
 
 func (c *InstancesGetShieldedInstanceIdentityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -66998,7 +66998,7 @@
 
 func (c *InstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67233,7 +67233,7 @@
 
 func (c *InstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67501,7 +67501,7 @@
 
 func (c *InstancesListReferrersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67723,7 +67723,7 @@
 
 func (c *InstancesResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -67907,7 +67907,7 @@
 
 func (c *InstancesSetDeletionProtectionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68093,7 +68093,7 @@
 
 func (c *InstancesSetDiskAutoDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68269,7 +68269,7 @@
 
 func (c *InstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68452,7 +68452,7 @@
 
 func (c *InstancesSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68640,7 +68640,7 @@
 
 func (c *InstancesSetMachineResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -68828,7 +68828,7 @@
 
 func (c *InstancesSetMachineTypeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69016,7 +69016,7 @@
 
 func (c *InstancesSetMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69205,7 +69205,7 @@
 
 func (c *InstancesSetMinCpuPlatformCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69393,7 +69393,7 @@
 
 func (c *InstancesSetSchedulingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69581,7 +69581,7 @@
 
 func (c *InstancesSetServiceAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69771,7 +69771,7 @@
 
 func (c *InstancesSetShieldedInstanceIntegrityPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -69959,7 +69959,7 @@
 
 func (c *InstancesSetTagsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70125,7 +70125,7 @@
 
 func (c *InstancesSimulateMaintenanceEventCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70299,7 +70299,7 @@
 
 func (c *InstancesStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70479,7 +70479,7 @@
 
 func (c *InstancesStartWithEncryptionKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70670,7 +70670,7 @@
 
 func (c *InstancesStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -70830,7 +70830,7 @@
 
 func (c *InstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71017,7 +71017,7 @@
 
 func (c *InstancesUpdateAccessConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71213,7 +71213,7 @@
 
 func (c *InstancesUpdateDisplayDeviceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71402,7 +71402,7 @@
 
 func (c *InstancesUpdateNetworkInterfaceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71599,7 +71599,7 @@
 
 func (c *InstancesUpdateShieldedInstanceConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -71835,7 +71835,7 @@
 
 func (c *InterconnectAttachmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72038,7 +72038,7 @@
 
 func (c *InterconnectAttachmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72207,7 +72207,7 @@
 
 func (c *InterconnectAttachmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72384,7 +72384,7 @@
 
 func (c *InterconnectAttachmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72613,7 +72613,7 @@
 
 func (c *InterconnectAttachmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -72828,7 +72828,7 @@
 
 func (c *InterconnectAttachmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73004,7 +73004,7 @@
 
 func (c *InterconnectLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73222,7 +73222,7 @@
 
 func (c *InterconnectLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73422,7 +73422,7 @@
 
 func (c *InterconnectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73581,7 +73581,7 @@
 
 func (c *InterconnectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73738,7 +73738,7 @@
 
 func (c *InterconnectsGetDiagnosticsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -73905,7 +73905,7 @@
 
 func (c *InterconnectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74123,7 +74123,7 @@
 
 func (c *InterconnectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74327,7 +74327,7 @@
 
 func (c *InterconnectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74494,7 +74494,7 @@
 
 func (c *LicenseCodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74642,7 +74642,7 @@
 
 func (c *LicenseCodesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74812,7 +74812,7 @@
 
 func (c *LicensesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -74971,7 +74971,7 @@
 
 func (c *LicensesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75129,7 +75129,7 @@
 
 func (c *LicensesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75294,7 +75294,7 @@
 
 func (c *LicensesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75520,7 +75520,7 @@
 
 func (c *LicensesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75704,7 +75704,7 @@
 
 func (c *LicensesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -75856,7 +75856,7 @@
 
 func (c *LicensesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76080,7 +76080,7 @@
 
 func (c *MachineTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76276,7 +76276,7 @@
 
 func (c *MachineTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76506,7 +76506,7 @@
 
 func (c *MachineTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76768,7 +76768,7 @@
 
 func (c *NetworkEndpointGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -76974,7 +76974,7 @@
 
 func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77160,7 +77160,7 @@
 
 func (c *NetworkEndpointGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77338,7 +77338,7 @@
 
 func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77514,7 +77514,7 @@
 
 func (c *NetworkEndpointGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77689,7 +77689,7 @@
 
 func (c *NetworkEndpointGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -77918,7 +77918,7 @@
 
 func (c *NetworkEndpointGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78174,7 +78174,7 @@
 
 func (c *NetworkEndpointGroupsListNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78382,7 +78382,7 @@
 
 func (c *NetworkEndpointGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78563,7 +78563,7 @@
 
 func (c *NetworksAddPeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78738,7 +78738,7 @@
 
 func (c *NetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -78898,7 +78898,7 @@
 
 func (c *NetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79064,7 +79064,7 @@
 
 func (c *NetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79283,7 +79283,7 @@
 
 func (c *NetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79487,7 +79487,7 @@
 
 func (c *NetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79663,7 +79663,7 @@
 
 func (c *NetworksRemovePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -79837,7 +79837,7 @@
 
 func (c *NetworksSwitchToCustomModeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80008,7 +80008,7 @@
 
 func (c *NetworksUpdatePeeringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80186,7 +80186,7 @@
 
 func (c *NodeGroupsAddNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80423,7 +80423,7 @@
 
 func (c *NodeGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80625,7 +80625,7 @@
 
 func (c *NodeGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80804,7 +80804,7 @@
 
 func (c *NodeGroupsDeleteNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -80983,7 +80983,7 @@
 
 func (c *NodeGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81152,7 +81152,7 @@
 
 func (c *NodeGroupsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81330,7 +81330,7 @@
 
 func (c *NodeGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81568,7 +81568,7 @@
 
 func (c *NodeGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -81823,7 +81823,7 @@
 
 func (c *NodeGroupsListNodesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82024,7 +82024,7 @@
 
 func (c *NodeGroupsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82206,7 +82206,7 @@
 
 func (c *NodeGroupsSetNodeTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82374,7 +82374,7 @@
 
 func (c *NodeGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82606,7 +82606,7 @@
 
 func (c *NodeTemplatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82808,7 +82808,7 @@
 
 func (c *NodeTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -82978,7 +82978,7 @@
 
 func (c *NodeTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83147,7 +83147,7 @@
 
 func (c *NodeTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83324,7 +83324,7 @@
 
 func (c *NodeTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83553,7 +83553,7 @@
 
 func (c *NodeTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83748,7 +83748,7 @@
 
 func (c *NodeTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -83911,7 +83911,7 @@
 
 func (c *NodeTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84143,7 +84143,7 @@
 
 func (c *NodeTypesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84338,7 +84338,7 @@
 
 func (c *NodeTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84567,7 +84567,7 @@
 
 func (c *NodeTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84774,7 +84774,7 @@
 
 func (c *ProjectsDisableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -84932,7 +84932,7 @@
 
 func (c *ProjectsDisableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85095,7 +85095,7 @@
 
 func (c *ProjectsEnableXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85254,7 +85254,7 @@
 
 func (c *ProjectsEnableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85410,7 +85410,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85557,7 +85557,7 @@
 
 func (c *ProjectsGetXpnHostCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -85766,7 +85766,7 @@
 
 func (c *ProjectsGetXpnResourcesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86009,7 +86009,7 @@
 
 func (c *ProjectsListXpnHostsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86213,7 +86213,7 @@
 
 func (c *ProjectsMoveDiskCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86378,7 +86378,7 @@
 
 func (c *ProjectsMoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86545,7 +86545,7 @@
 
 func (c *ProjectsSetCommonInstanceMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86712,7 +86712,7 @@
 
 func (c *ProjectsSetDefaultNetworkTierCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -86880,7 +86880,7 @@
 
 func (c *ProjectsSetUsageExportBucketCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87050,7 +87050,7 @@
 
 func (c *RegionAutoscalersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87219,7 +87219,7 @@
 
 func (c *RegionAutoscalersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87395,7 +87395,7 @@
 
 func (c *RegionAutoscalersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87624,7 +87624,7 @@
 
 func (c *RegionAutoscalersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -87844,7 +87844,7 @@
 
 func (c *RegionAutoscalersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88033,7 +88033,7 @@
 
 func (c *RegionAutoscalersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88215,7 +88215,7 @@
 
 func (c *RegionBackendServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88384,7 +88384,7 @@
 
 func (c *RegionBackendServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88543,7 +88543,7 @@
 
 func (c *RegionBackendServicesGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88726,7 +88726,7 @@
 
 func (c *RegionBackendServicesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -88956,7 +88956,7 @@
 
 func (c *RegionBackendServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89173,7 +89173,7 @@
 
 func (c *RegionBackendServicesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89363,7 +89363,7 @@
 
 func (c *RegionBackendServicesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89599,7 +89599,7 @@
 
 func (c *RegionCommitmentsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89794,7 +89794,7 @@
 
 func (c *RegionCommitmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -89970,7 +89970,7 @@
 
 func (c *RegionCommitmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90199,7 +90199,7 @@
 
 func (c *RegionCommitmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90403,7 +90403,7 @@
 
 func (c *RegionDiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90632,7 +90632,7 @@
 
 func (c *RegionDiskTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -90847,7 +90847,7 @@
 
 func (c *RegionDisksAddResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91034,7 +91034,7 @@
 
 func (c *RegionDisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91222,7 +91222,7 @@
 
 func (c *RegionDisksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91390,7 +91390,7 @@
 
 func (c *RegionDisksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91574,7 +91574,7 @@
 
 func (c *RegionDisksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -91808,7 +91808,7 @@
 
 func (c *RegionDisksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92021,7 +92021,7 @@
 
 func (c *RegionDisksRemoveResourcePoliciesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92208,7 +92208,7 @@
 
 func (c *RegionDisksResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92395,7 +92395,7 @@
 
 func (c *RegionDisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92563,7 +92563,7 @@
 
 func (c *RegionDisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92744,7 +92744,7 @@
 
 func (c *RegionHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -92914,7 +92914,7 @@
 
 func (c *RegionHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93091,7 +93091,7 @@
 
 func (c *RegionHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93320,7 +93320,7 @@
 
 func (c *RegionHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93535,7 +93535,7 @@
 
 func (c *RegionHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93723,7 +93723,7 @@
 
 func (c *RegionHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -93925,7 +93925,7 @@
 
 func (c *RegionInstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94108,7 +94108,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94300,7 +94300,7 @@
 
 func (c *RegionInstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94475,7 +94475,7 @@
 
 func (c *RegionInstanceGroupManagersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94657,7 +94657,7 @@
 
 func (c *RegionInstanceGroupManagersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -94886,7 +94886,7 @@
 
 func (c *RegionInstanceGroupManagersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95142,7 +95142,7 @@
 
 func (c *RegionInstanceGroupManagersListManagedInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95345,7 +95345,7 @@
 
 func (c *RegionInstanceGroupManagersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95543,7 +95543,7 @@
 
 func (c *RegionInstanceGroupManagersRecreateInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95739,7 +95739,7 @@
 
 func (c *RegionInstanceGroupManagersResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -95927,7 +95927,7 @@
 
 func (c *RegionInstanceGroupManagersSetInstanceTemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96113,7 +96113,7 @@
 
 func (c *RegionInstanceGroupManagersSetTargetPoolsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96288,7 +96288,7 @@
 
 func (c *RegionInstanceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96515,7 +96515,7 @@
 
 func (c *RegionInstanceGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -96774,7 +96774,7 @@
 
 func (c *RegionInstanceGroupsListInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97000,7 +97000,7 @@
 
 func (c *RegionInstanceGroupsSetNamedPortsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97165,7 +97165,7 @@
 
 func (c *RegionOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97302,7 +97302,7 @@
 
 func (c *RegionOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97532,7 +97532,7 @@
 
 func (c *RegionOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97743,7 +97743,7 @@
 
 func (c *RegionSslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -97913,7 +97913,7 @@
 
 func (c *RegionSslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98090,7 +98090,7 @@
 
 func (c *RegionSslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98320,7 +98320,7 @@
 
 func (c *RegionSslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98531,7 +98531,7 @@
 
 func (c *RegionTargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98701,7 +98701,7 @@
 
 func (c *RegionTargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -98878,7 +98878,7 @@
 
 func (c *RegionTargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99108,7 +99108,7 @@
 
 func (c *RegionTargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99321,7 +99321,7 @@
 
 func (c *RegionTargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99506,7 +99506,7 @@
 
 func (c *RegionTargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99676,7 +99676,7 @@
 
 func (c *RegionTargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -99853,7 +99853,7 @@
 
 func (c *RegionTargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100083,7 +100083,7 @@
 
 func (c *RegionTargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100296,7 +100296,7 @@
 
 func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100483,7 +100483,7 @@
 
 func (c *RegionTargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100656,7 +100656,7 @@
 
 func (c *RegionUrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100826,7 +100826,7 @@
 
 func (c *RegionUrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -100991,7 +100991,7 @@
 
 func (c *RegionUrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101221,7 +101221,7 @@
 
 func (c *RegionUrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101424,7 +101424,7 @@
 
 func (c *RegionUrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101599,7 +101599,7 @@
 
 func (c *RegionUrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101768,7 +101768,7 @@
 
 func (c *RegionUrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -101940,7 +101940,7 @@
 
 func (c *RegionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102159,7 +102159,7 @@
 
 func (c *RegionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102412,7 +102412,7 @@
 
 func (c *ReservationsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102614,7 +102614,7 @@
 
 func (c *ReservationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102783,7 +102783,7 @@
 
 func (c *ReservationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -102952,7 +102952,7 @@
 
 func (c *ReservationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103129,7 +103129,7 @@
 
 func (c *ReservationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103359,7 +103359,7 @@
 
 func (c *ReservationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103573,7 +103573,7 @@
 
 func (c *ReservationsResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103742,7 +103742,7 @@
 
 func (c *ReservationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -103905,7 +103905,7 @@
 
 func (c *ReservationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104137,7 +104137,7 @@
 
 func (c *ResourcePoliciesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104339,7 +104339,7 @@
 
 func (c *ResourcePoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104508,7 +104508,7 @@
 
 func (c *ResourcePoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104677,7 +104677,7 @@
 
 func (c *ResourcePoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -104853,7 +104853,7 @@
 
 func (c *ResourcePoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105083,7 +105083,7 @@
 
 func (c *ResourcePoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105278,7 +105278,7 @@
 
 func (c *ResourcePoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105441,7 +105441,7 @@
 
 func (c *ResourcePoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105673,7 +105673,7 @@
 
 func (c *RoutersAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -105875,7 +105875,7 @@
 
 func (c *RoutersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106045,7 +106045,7 @@
 
 func (c *RoutersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106276,7 +106276,7 @@
 
 func (c *RoutersGetNatMappingInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106488,7 +106488,7 @@
 
 func (c *RoutersGetRouterStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106665,7 +106665,7 @@
 
 func (c *RoutersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -106894,7 +106894,7 @@
 
 func (c *RoutersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107109,7 +107109,7 @@
 
 func (c *RoutersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107278,7 +107278,7 @@
 
 func (c *RoutersPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107464,7 +107464,7 @@
 
 func (c *RoutersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107648,7 +107648,7 @@
 
 func (c *RoutesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107808,7 +107808,7 @@
 
 func (c *RoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -107975,7 +107975,7 @@
 
 func (c *RoutesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108194,7 +108194,7 @@
 
 func (c *RoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108377,7 +108377,7 @@
 
 func (c *SecurityPoliciesAddRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108546,7 +108546,7 @@
 
 func (c *SecurityPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108704,7 +108704,7 @@
 
 func (c *SecurityPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -108868,7 +108868,7 @@
 
 func (c *SecurityPoliciesGetRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109039,7 +109039,7 @@
 
 func (c *SecurityPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109257,7 +109257,7 @@
 
 func (c *SecurityPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109459,7 +109459,7 @@
 
 func (c *SecurityPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109623,7 +109623,7 @@
 
 func (c *SecurityPoliciesPatchRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109786,7 +109786,7 @@
 
 func (c *SecurityPoliciesRemoveRuleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -109960,7 +109960,7 @@
 
 func (c *SnapshotsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110120,7 +110120,7 @@
 
 func (c *SnapshotsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110278,7 +110278,7 @@
 
 func (c *SnapshotsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110497,7 +110497,7 @@
 
 func (c *SnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110681,7 +110681,7 @@
 
 func (c *SnapshotsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110834,7 +110834,7 @@
 
 func (c *SnapshotsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -110986,7 +110986,7 @@
 
 func (c *SnapshotsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111210,7 +111210,7 @@
 
 func (c *SslCertificatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111410,7 +111410,7 @@
 
 func (c *SslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111569,7 +111569,7 @@
 
 func (c *SslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111735,7 +111735,7 @@
 
 func (c *SslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -111953,7 +111953,7 @@
 
 func (c *SslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112154,7 +112154,7 @@
 
 func (c *SslPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112311,7 +112311,7 @@
 
 func (c *SslPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112476,7 +112476,7 @@
 
 func (c *SslPoliciesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112694,7 +112694,7 @@
 
 func (c *SslPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -112948,7 +112948,7 @@
 
 func (c *SslPoliciesListAvailableFeaturesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113131,7 +113131,7 @@
 
 func (c *SslPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113357,7 +113357,7 @@
 
 func (c *SubnetworksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113559,7 +113559,7 @@
 
 func (c *SubnetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113738,7 +113738,7 @@
 
 func (c *SubnetworksExpandIpCidrRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -113916,7 +113916,7 @@
 
 func (c *SubnetworksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114085,7 +114085,7 @@
 
 func (c *SubnetworksGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114261,7 +114261,7 @@
 
 func (c *SubnetworksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114490,7 +114490,7 @@
 
 func (c *SubnetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114754,7 +114754,7 @@
 
 func (c *SubnetworksListUsableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -114976,7 +114976,7 @@
 
 func (c *SubnetworksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115151,7 +115151,7 @@
 
 func (c *SubnetworksSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115334,7 +115334,7 @@
 
 func (c *SubnetworksSetPrivateIpGoogleAccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115502,7 +115502,7 @@
 
 func (c *SubnetworksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115735,7 +115735,7 @@
 
 func (c *TargetHttpProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -115936,7 +115936,7 @@
 
 func (c *TargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116096,7 +116096,7 @@
 
 func (c *TargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116263,7 +116263,7 @@
 
 func (c *TargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116482,7 +116482,7 @@
 
 func (c *TargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116685,7 +116685,7 @@
 
 func (c *TargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -116913,7 +116913,7 @@
 
 func (c *TargetHttpsProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117113,7 +117113,7 @@
 
 func (c *TargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117272,7 +117272,7 @@
 
 func (c *TargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117438,7 +117438,7 @@
 
 func (c *TargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117656,7 +117656,7 @@
 
 func (c *TargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -117858,7 +117858,7 @@
 
 func (c *TargetHttpsProxiesSetQuicOverrideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118033,7 +118033,7 @@
 
 func (c *TargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118212,7 +118212,7 @@
 
 func (c *TargetHttpsProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118387,7 +118387,7 @@
 
 func (c *TargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118615,7 +118615,7 @@
 
 func (c *TargetInstancesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118818,7 +118818,7 @@
 
 func (c *TargetInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -118989,7 +118989,7 @@
 
 func (c *TargetInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119167,7 +119167,7 @@
 
 func (c *TargetInstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119398,7 +119398,7 @@
 
 func (c *TargetInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119612,7 +119612,7 @@
 
 func (c *TargetPoolsAddHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -119800,7 +119800,7 @@
 
 func (c *TargetPoolsAddInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120037,7 +120037,7 @@
 
 func (c *TargetPoolsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120240,7 +120240,7 @@
 
 func (c *TargetPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120411,7 +120411,7 @@
 
 func (c *TargetPoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120572,7 +120572,7 @@
 
 func (c *TargetPoolsGetHealthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120755,7 +120755,7 @@
 
 func (c *TargetPoolsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -120985,7 +120985,7 @@
 
 func (c *TargetPoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121199,7 +121199,7 @@
 
 func (c *TargetPoolsRemoveHealthCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121387,7 +121387,7 @@
 
 func (c *TargetPoolsRemoveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121582,7 +121582,7 @@
 
 func (c *TargetPoolsSetBackupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121771,7 +121771,7 @@
 
 func (c *TargetSslProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -121930,7 +121930,7 @@
 
 func (c *TargetSslProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122096,7 +122096,7 @@
 
 func (c *TargetSslProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122314,7 +122314,7 @@
 
 func (c *TargetSslProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122516,7 +122516,7 @@
 
 func (c *TargetSslProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122692,7 +122692,7 @@
 
 func (c *TargetSslProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -122868,7 +122868,7 @@
 
 func (c *TargetSslProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123047,7 +123047,7 @@
 
 func (c *TargetSslProxiesSetSslPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123220,7 +123220,7 @@
 
 func (c *TargetTcpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123379,7 +123379,7 @@
 
 func (c *TargetTcpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123545,7 +123545,7 @@
 
 func (c *TargetTcpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123763,7 +123763,7 @@
 
 func (c *TargetTcpProxiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -123965,7 +123965,7 @@
 
 func (c *TargetTcpProxiesSetBackendServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124141,7 +124141,7 @@
 
 func (c *TargetTcpProxiesSetProxyHeaderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124368,7 +124368,7 @@
 
 func (c *TargetVpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124570,7 +124570,7 @@
 
 func (c *TargetVpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124740,7 +124740,7 @@
 
 func (c *TargetVpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -124917,7 +124917,7 @@
 
 func (c *TargetVpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125147,7 +125147,7 @@
 
 func (c *TargetVpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125410,7 +125410,7 @@
 
 func (c *UrlMapsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125611,7 +125611,7 @@
 
 func (c *UrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125771,7 +125771,7 @@
 
 func (c *UrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -125938,7 +125938,7 @@
 
 func (c *UrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126106,7 +126106,7 @@
 
 func (c *UrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126334,7 +126334,7 @@
 
 func (c *UrlMapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126539,7 +126539,7 @@
 
 func (c *UrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126716,7 +126716,7 @@
 
 func (c *UrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -126875,7 +126875,7 @@
 
 func (c *UrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127097,7 +127097,7 @@
 
 func (c *VpnGatewaysAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127299,7 +127299,7 @@
 
 func (c *VpnGatewaysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127469,7 +127469,7 @@
 
 func (c *VpnGatewaysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127637,7 +127637,7 @@
 
 func (c *VpnGatewaysGetStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -127814,7 +127814,7 @@
 
 func (c *VpnGatewaysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128043,7 +128043,7 @@
 
 func (c *VpnGatewaysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128257,7 +128257,7 @@
 
 func (c *VpnGatewaysSetLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128425,7 +128425,7 @@
 
 func (c *VpnGatewaysTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128657,7 +128657,7 @@
 
 func (c *VpnTunnelsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -128859,7 +128859,7 @@
 
 func (c *VpnTunnelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129029,7 +129029,7 @@
 
 func (c *VpnTunnelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129206,7 +129206,7 @@
 
 func (c *VpnTunnelsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129436,7 +129436,7 @@
 
 func (c *VpnTunnelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129629,7 +129629,7 @@
 
 func (c *ZoneOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129766,7 +129766,7 @@
 
 func (c *ZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -129996,7 +129996,7 @@
 
 func (c *ZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130199,7 +130199,7 @@
 
 func (c *ZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -130418,7 +130418,7 @@
 
 func (c *ZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/container/v1/container-api.json b/container/v1/container-api.json
index 3acc7f3..2dd3a73 100644
--- a/container/v1/container-api.json
+++ b/container/v1/container-api.json
@@ -2458,7 +2458,7 @@
       }
     }
   },
-  "revision": "20191024",
+  "revision": "20191021",
   "rootUrl": "https://container.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -2755,7 +2755,7 @@
           "type": "string"
         },
         "name": {
-          "description": "The name of this cluster. The name must be unique within this project\nand location (e.g. zone or region), and can be up to 40 characters with\nthe following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.",
+          "description": "The name of this cluster. The name must be unique within this project\nand zone, and can be up to 40 characters with the following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.",
           "type": "string"
         },
         "network": {
diff --git a/container/v1/container-gen.go b/container/v1/container-gen.go
index 89369ca..d5d7b36 100644
--- a/container/v1/container-gen.go
+++ b/container/v1/container-gen.go
@@ -860,9 +860,8 @@
 
 	// Name: The name of this cluster. The name must be unique within this
 	// project
-	// and location (e.g. zone or region), and can be up to 40 characters
-	// with
-	// the following restrictions:
+	// and zone, and can be up to 40 characters with the following
+	// restrictions:
 	//
 	// * Lowercase letters, numbers, and hyphens only.
 	// * Must start with a letter.
@@ -4588,7 +4587,7 @@
 
 func (c *ProjectsAggregatedUsableSubnetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4790,7 +4789,7 @@
 
 func (c *ProjectsLocationsGetServerConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4935,7 +4934,7 @@
 
 func (c *ProjectsLocationsClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5091,7 +5090,7 @@
 
 func (c *ProjectsLocationsClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5270,7 +5269,7 @@
 
 func (c *ProjectsLocationsClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5456,7 +5455,7 @@
 
 func (c *ProjectsLocationsClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5620,7 +5619,7 @@
 
 func (c *ProjectsLocationsClustersGetJwksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5784,7 +5783,7 @@
 
 func (c *ProjectsLocationsClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5929,7 +5928,7 @@
 
 func (c *ProjectsLocationsClustersSetAddonsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6070,7 +6069,7 @@
 
 func (c *ProjectsLocationsClustersSetLegacyAbacCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6210,7 +6209,7 @@
 
 func (c *ProjectsLocationsClustersSetLocationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6350,7 +6349,7 @@
 
 func (c *ProjectsLocationsClustersSetLoggingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6490,7 +6489,7 @@
 
 func (c *ProjectsLocationsClustersSetMaintenancePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6634,7 +6633,7 @@
 
 func (c *ProjectsLocationsClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6774,7 +6773,7 @@
 
 func (c *ProjectsLocationsClustersSetMonitoringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6914,7 +6913,7 @@
 
 func (c *ProjectsLocationsClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7054,7 +7053,7 @@
 
 func (c *ProjectsLocationsClustersSetResourceLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7194,7 +7193,7 @@
 
 func (c *ProjectsLocationsClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7334,7 +7333,7 @@
 
 func (c *ProjectsLocationsClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7474,7 +7473,7 @@
 
 func (c *ProjectsLocationsClustersUpdateMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7614,7 +7613,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7790,7 +7789,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7989,7 +7988,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8183,7 +8182,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8335,7 +8334,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8476,7 +8475,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetAutoscalingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8616,7 +8615,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8756,7 +8755,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetSizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8897,7 +8896,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9056,7 +9055,7 @@
 
 func (c *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9188,7 +9187,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9367,7 +9366,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9549,7 +9548,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9714,7 +9713,7 @@
 
 func (c *ProjectsZonesGetServerconfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9865,7 +9864,7 @@
 
 func (c *ProjectsZonesClustersAddonsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10024,7 +10023,7 @@
 
 func (c *ProjectsZonesClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10197,7 +10196,7 @@
 
 func (c *ProjectsZonesClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10365,7 +10364,7 @@
 
 func (c *ProjectsZonesClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10538,7 +10537,7 @@
 
 func (c *ProjectsZonesClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10698,7 +10697,7 @@
 
 func (c *ProjectsZonesClustersLegacyAbacCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10875,7 +10874,7 @@
 
 func (c *ProjectsZonesClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11026,7 +11025,7 @@
 
 func (c *ProjectsZonesClustersLocationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11185,7 +11184,7 @@
 
 func (c *ProjectsZonesClustersLoggingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11344,7 +11343,7 @@
 
 func (c *ProjectsZonesClustersMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11503,7 +11502,7 @@
 
 func (c *ProjectsZonesClustersMonitoringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11662,7 +11661,7 @@
 
 func (c *ProjectsZonesClustersResourceLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11821,7 +11820,7 @@
 
 func (c *ProjectsZonesClustersSetMaintenancePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11984,7 +11983,7 @@
 
 func (c *ProjectsZonesClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12143,7 +12142,7 @@
 
 func (c *ProjectsZonesClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12302,7 +12301,7 @@
 
 func (c *ProjectsZonesClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12461,7 +12460,7 @@
 
 func (c *ProjectsZonesClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12623,7 +12622,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsAutoscalingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12790,7 +12789,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12959,7 +12958,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13144,7 +13143,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13328,7 +13327,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13491,7 +13490,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13660,7 +13659,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13829,7 +13828,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsSetSizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13999,7 +13998,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14166,7 +14165,7 @@
 
 func (c *ProjectsZonesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14342,7 +14341,7 @@
 
 func (c *ProjectsZonesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14518,7 +14517,7 @@
 
 func (c *ProjectsZonesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/container/v1beta1/container-gen.go b/container/v1beta1/container-gen.go
index 7e7e006..5ee4dc5 100644
--- a/container/v1beta1/container-gen.go
+++ b/container/v1beta1/container-gen.go
@@ -5631,7 +5631,7 @@
 
 func (c *ProjectsAggregatedUsableSubnetworksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5833,7 +5833,7 @@
 
 func (c *ProjectsLocationsGetServerConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5987,7 +5987,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6122,7 +6122,7 @@
 
 func (c *ProjectsLocationsClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6278,7 +6278,7 @@
 
 func (c *ProjectsLocationsClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6457,7 +6457,7 @@
 
 func (c *ProjectsLocationsClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6643,7 +6643,7 @@
 
 func (c *ProjectsLocationsClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6807,7 +6807,7 @@
 
 func (c *ProjectsLocationsClustersGetJwksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6971,7 +6971,7 @@
 
 func (c *ProjectsLocationsClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7116,7 +7116,7 @@
 
 func (c *ProjectsLocationsClustersSetAddonsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7257,7 +7257,7 @@
 
 func (c *ProjectsLocationsClustersSetLegacyAbacCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7397,7 +7397,7 @@
 
 func (c *ProjectsLocationsClustersSetLocationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7537,7 +7537,7 @@
 
 func (c *ProjectsLocationsClustersSetLoggingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7677,7 +7677,7 @@
 
 func (c *ProjectsLocationsClustersSetMaintenancePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7821,7 +7821,7 @@
 
 func (c *ProjectsLocationsClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7961,7 +7961,7 @@
 
 func (c *ProjectsLocationsClustersSetMonitoringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8101,7 +8101,7 @@
 
 func (c *ProjectsLocationsClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8241,7 +8241,7 @@
 
 func (c *ProjectsLocationsClustersSetResourceLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8381,7 +8381,7 @@
 
 func (c *ProjectsLocationsClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8521,7 +8521,7 @@
 
 func (c *ProjectsLocationsClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8661,7 +8661,7 @@
 
 func (c *ProjectsLocationsClustersUpdateMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8801,7 +8801,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8977,7 +8977,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9176,7 +9176,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9370,7 +9370,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9522,7 +9522,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9663,7 +9663,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetAutoscalingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9803,7 +9803,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9943,7 +9943,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsSetSizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10084,7 +10084,7 @@
 
 func (c *ProjectsLocationsClustersNodePoolsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10243,7 +10243,7 @@
 
 func (c *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10375,7 +10375,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10554,7 +10554,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10736,7 +10736,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10901,7 +10901,7 @@
 
 func (c *ProjectsZonesGetServerconfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11052,7 +11052,7 @@
 
 func (c *ProjectsZonesClustersAddonsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11211,7 +11211,7 @@
 
 func (c *ProjectsZonesClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11384,7 +11384,7 @@
 
 func (c *ProjectsZonesClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11552,7 +11552,7 @@
 
 func (c *ProjectsZonesClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11725,7 +11725,7 @@
 
 func (c *ProjectsZonesClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11885,7 +11885,7 @@
 
 func (c *ProjectsZonesClustersLegacyAbacCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12062,7 +12062,7 @@
 
 func (c *ProjectsZonesClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12213,7 +12213,7 @@
 
 func (c *ProjectsZonesClustersLocationsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12372,7 +12372,7 @@
 
 func (c *ProjectsZonesClustersLoggingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12531,7 +12531,7 @@
 
 func (c *ProjectsZonesClustersMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12690,7 +12690,7 @@
 
 func (c *ProjectsZonesClustersMonitoringCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12849,7 +12849,7 @@
 
 func (c *ProjectsZonesClustersResourceLabelsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13008,7 +13008,7 @@
 
 func (c *ProjectsZonesClustersSetMaintenancePolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13171,7 +13171,7 @@
 
 func (c *ProjectsZonesClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13330,7 +13330,7 @@
 
 func (c *ProjectsZonesClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13489,7 +13489,7 @@
 
 func (c *ProjectsZonesClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13648,7 +13648,7 @@
 
 func (c *ProjectsZonesClustersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13809,7 +13809,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsAutoscalingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13976,7 +13976,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14145,7 +14145,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14330,7 +14330,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14514,7 +14514,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14677,7 +14677,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14846,7 +14846,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15015,7 +15015,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsSetSizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15185,7 +15185,7 @@
 
 func (c *ProjectsZonesClustersNodePoolsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15352,7 +15352,7 @@
 
 func (c *ProjectsZonesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15528,7 +15528,7 @@
 
 func (c *ProjectsZonesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15704,7 +15704,7 @@
 
 func (c *ProjectsZonesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go
index 579f3b6..474ec80 100644
--- a/containeranalysis/v1alpha1/containeranalysis-gen.go
+++ b/containeranalysis/v1alpha1/containeranalysis-gen.go
@@ -3596,7 +3596,7 @@
 
 func (c *ProjectsNotesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3744,7 +3744,7 @@
 
 func (c *ProjectsNotesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3885,7 +3885,7 @@
 
 func (c *ProjectsNotesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4039,7 +4039,7 @@
 
 func (c *ProjectsNotesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4217,7 +4217,7 @@
 
 func (c *ProjectsNotesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4401,7 +4401,7 @@
 
 func (c *ProjectsNotesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4567,7 +4567,7 @@
 
 func (c *ProjectsNotesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4721,7 +4721,7 @@
 
 func (c *ProjectsNotesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4894,7 +4894,7 @@
 
 func (c *ProjectsNotesOccurrencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5076,7 +5076,7 @@
 
 func (c *ProjectsOccurrencesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5221,7 +5221,7 @@
 
 func (c *ProjectsOccurrencesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5362,7 +5362,7 @@
 
 func (c *ProjectsOccurrencesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5516,7 +5516,7 @@
 
 func (c *ProjectsOccurrencesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5665,7 +5665,7 @@
 
 func (c *ProjectsOccurrencesGetNotesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5816,7 +5816,7 @@
 
 func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6014,7 +6014,7 @@
 
 func (c *ProjectsOccurrencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6214,7 +6214,7 @@
 
 func (c *ProjectsOccurrencesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6380,7 +6380,7 @@
 
 func (c *ProjectsOccurrencesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6534,7 +6534,7 @@
 
 func (c *ProjectsOccurrencesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6674,7 +6674,7 @@
 
 func (c *ProjectsOperationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6817,7 +6817,7 @@
 
 func (c *ProjectsOperationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6966,7 +6966,7 @@
 
 func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7130,7 +7130,7 @@
 
 func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7309,7 +7309,7 @@
 
 func (c *ProjectsScanConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7470,7 +7470,7 @@
 
 func (c *ProvidersNotesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7618,7 +7618,7 @@
 
 func (c *ProvidersNotesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7759,7 +7759,7 @@
 
 func (c *ProvidersNotesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7913,7 +7913,7 @@
 
 func (c *ProvidersNotesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8089,7 +8089,7 @@
 
 func (c *ProvidersNotesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8273,7 +8273,7 @@
 
 func (c *ProvidersNotesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8439,7 +8439,7 @@
 
 func (c *ProvidersNotesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8593,7 +8593,7 @@
 
 func (c *ProvidersNotesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8766,7 +8766,7 @@
 
 func (c *ProvidersNotesOccurrencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/containeranalysis/v1beta1/containeranalysis-gen.go b/containeranalysis/v1beta1/containeranalysis-gen.go
index 8ad3bc6..4934b26 100644
--- a/containeranalysis/v1beta1/containeranalysis-gen.go
+++ b/containeranalysis/v1beta1/containeranalysis-gen.go
@@ -3811,7 +3811,7 @@
 
 func (c *ProjectsNotesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3958,7 +3958,7 @@
 
 func (c *ProjectsNotesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4101,7 +4101,7 @@
 
 func (c *ProjectsNotesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4242,7 +4242,7 @@
 
 func (c *ProjectsNotesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4389,7 +4389,7 @@
 
 func (c *ProjectsNotesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4559,7 +4559,7 @@
 
 func (c *ProjectsNotesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4738,7 +4738,7 @@
 
 func (c *ProjectsNotesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4896,7 +4896,7 @@
 
 func (c *ProjectsNotesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5046,7 +5046,7 @@
 
 func (c *ProjectsNotesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5219,7 +5219,7 @@
 
 func (c *ProjectsNotesOccurrencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5391,7 +5391,7 @@
 
 func (c *ProjectsOccurrencesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5531,7 +5531,7 @@
 
 func (c *ProjectsOccurrencesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5673,7 +5673,7 @@
 
 func (c *ProjectsOccurrencesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5814,7 +5814,7 @@
 
 func (c *ProjectsOccurrencesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5961,7 +5961,7 @@
 
 func (c *ProjectsOccurrencesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6112,7 +6112,7 @@
 
 func (c *ProjectsOccurrencesGetNotesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6263,7 +6263,7 @@
 
 func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6433,7 +6433,7 @@
 
 func (c *ProjectsOccurrencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6612,7 +6612,7 @@
 
 func (c *ProjectsOccurrencesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6770,7 +6770,7 @@
 
 func (c *ProjectsOccurrencesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6920,7 +6920,7 @@
 
 func (c *ProjectsOccurrencesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7069,7 +7069,7 @@
 
 func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7233,7 +7233,7 @@
 
 func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7405,7 +7405,7 @@
 
 func (c *ProjectsScanConfigsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/content/v2.1/content-gen.go b/content/v2.1/content-gen.go
index d99df14..559093e 100644
--- a/content/v2.1/content-gen.go
+++ b/content/v2.1/content-gen.go
@@ -10583,7 +10583,7 @@
 
 func (c *AccountsAuthinfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10711,7 +10711,7 @@
 
 func (c *AccountsClaimwebsiteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10855,7 +10855,7 @@
 
 func (c *AccountsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10986,7 +10986,7 @@
 
 func (c *AccountsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11115,7 +11115,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11258,7 +11258,7 @@
 
 func (c *AccountsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11400,7 +11400,7 @@
 
 func (c *AccountsLinkCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11571,7 +11571,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11739,7 +11739,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11886,7 +11886,7 @@
 
 func (c *AccountstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12031,7 +12031,7 @@
 
 func (c *AccountstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12213,7 +12213,7 @@
 
 func (c *AccountstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12384,7 +12384,7 @@
 
 func (c *AccounttaxCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12519,7 +12519,7 @@
 
 func (c *AccounttaxGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12686,7 +12686,7 @@
 
 func (c *AccounttaxListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12854,7 +12854,7 @@
 
 func (c *AccounttaxUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13001,7 +13001,7 @@
 
 func (c *DatafeedsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13126,7 +13126,7 @@
 
 func (c *DatafeedsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13239,7 +13239,7 @@
 
 func (c *DatafeedsFetchnowCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13391,7 +13391,7 @@
 
 func (c *DatafeedsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13535,7 +13535,7 @@
 
 func (c *DatafeedsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13698,7 +13698,7 @@
 
 func (c *DatafeedsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13867,7 +13867,7 @@
 
 func (c *DatafeedsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14014,7 +14014,7 @@
 
 func (c *DatafeedstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14171,7 +14171,7 @@
 
 func (c *DatafeedstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14348,7 +14348,7 @@
 
 func (c *DatafeedstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14513,7 +14513,7 @@
 
 func (c *LiasettingsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14648,7 +14648,7 @@
 
 func (c *LiasettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14803,7 +14803,7 @@
 
 func (c *LiasettingsGetaccessiblegmbaccountsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14972,7 +14972,7 @@
 
 func (c *LiasettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15146,7 +15146,7 @@
 
 func (c *LiasettingsListposdataprovidersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15268,7 +15268,7 @@
 
 func (c *LiasettingsRequestgmbaccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15419,7 +15419,7 @@
 
 func (c *LiasettingsRequestinventoryverificationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15574,7 +15574,7 @@
 
 func (c *LiasettingsSetinventoryverificationcontactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15761,7 +15761,7 @@
 
 func (c *LiasettingsSetposdataproviderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15922,7 +15922,7 @@
 
 func (c *LiasettingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16073,7 +16073,7 @@
 
 func (c *OrderinvoicesCreatechargeinvoiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16228,7 +16228,7 @@
 
 func (c *OrderinvoicesCreaterefundinvoiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16410,7 +16410,7 @@
 
 func (c *OrderreportsListdisbursementsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16624,7 +16624,7 @@
 
 func (c *OrderreportsListtransactionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16822,7 +16822,7 @@
 
 func (c *OrderreturnsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17016,7 +17016,7 @@
 
 func (c *OrderreturnsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17207,7 +17207,7 @@
 
 func (c *OrdersAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17355,7 +17355,7 @@
 
 func (c *OrdersAdvancetestorderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17496,7 +17496,7 @@
 
 func (c *OrdersCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17645,7 +17645,7 @@
 
 func (c *OrdersCancellineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17795,7 +17795,7 @@
 
 func (c *OrdersCanceltestorderbycustomerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17943,7 +17943,7 @@
 
 func (c *OrdersCreatetestorderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18084,7 +18084,7 @@
 
 func (c *OrdersCreatetestreturnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18242,7 +18242,7 @@
 
 func (c *OrdersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18395,7 +18395,7 @@
 
 func (c *OrdersGetbymerchantorderidCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18557,7 +18557,7 @@
 
 func (c *OrdersGettestordertemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18728,7 +18728,7 @@
 
 func (c *OrdersInstorerefundlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18961,7 +18961,7 @@
 
 func (c *OrdersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19181,7 +19181,7 @@
 
 func (c *OrdersRejectreturnlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19332,7 +19332,7 @@
 
 func (c *OrdersReturnrefundlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19487,7 +19487,7 @@
 
 func (c *OrdersSetlineitemmetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19637,7 +19637,7 @@
 
 func (c *OrdersShiplineitemsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19787,7 +19787,7 @@
 
 func (c *OrdersUpdatelineitemshippingdetailsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19939,7 +19939,7 @@
 
 func (c *OrdersUpdatemerchantorderidCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20090,7 +20090,7 @@
 
 func (c *OrdersUpdateshipmentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20235,7 +20235,7 @@
 
 func (c *PosCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20361,7 +20361,7 @@
 
 func (c *PosDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20494,7 +20494,7 @@
 
 func (c *PosGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20647,7 +20647,7 @@
 
 func (c *PosInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20797,7 +20797,7 @@
 
 func (c *PosInventoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20956,7 +20956,7 @@
 
 func (c *PosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21101,7 +21101,7 @@
 
 func (c *PosSaleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21248,7 +21248,7 @@
 
 func (c *ProductsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21379,7 +21379,7 @@
 
 func (c *ProductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21507,7 +21507,7 @@
 
 func (c *ProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21658,7 +21658,7 @@
 
 func (c *ProductsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21826,7 +21826,7 @@
 
 func (c *ProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21991,7 +21991,7 @@
 
 func (c *ProductstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22135,7 +22135,7 @@
 
 func (c *ProductstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22316,7 +22316,7 @@
 
 func (c *ProductstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22487,7 +22487,7 @@
 
 func (c *RegionalinventoryCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22616,7 +22616,7 @@
 
 func (c *RegionalinventoryInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22762,7 +22762,7 @@
 
 func (c *ReturnaddressCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22887,7 +22887,7 @@
 
 func (c *ReturnaddressDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23009,7 +23009,7 @@
 
 func (c *ReturnaddressGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23151,7 +23151,7 @@
 
 func (c *ReturnaddressInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23321,7 +23321,7 @@
 
 func (c *ReturnaddressListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23491,7 +23491,7 @@
 
 func (c *ReturnpolicyCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23616,7 +23616,7 @@
 
 func (c *ReturnpolicyDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23738,7 +23738,7 @@
 
 func (c *ReturnpolicyGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23880,7 +23880,7 @@
 
 func (c *ReturnpolicyInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24028,7 +24028,7 @@
 
 func (c *ReturnpolicyListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24161,7 +24161,7 @@
 
 func (c *ShippingsettingsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24297,7 +24297,7 @@
 
 func (c *ShippingsettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24450,7 +24450,7 @@
 
 func (c *ShippingsettingsGetsupportedcarriersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24595,7 +24595,7 @@
 
 func (c *ShippingsettingsGetsupportedholidaysCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24756,7 +24756,7 @@
 
 func (c *ShippingsettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24924,7 +24924,7 @@
 
 func (c *ShippingsettingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index 5c1af70..a9f3bd9 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -11430,7 +11430,7 @@
 
 func (c *AccountsAuthinfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11558,7 +11558,7 @@
 
 func (c *AccountsClaimwebsiteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11710,7 +11710,7 @@
 
 func (c *AccountsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11856,7 +11856,7 @@
 
 func (c *AccountsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11990,7 +11990,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12141,7 +12141,7 @@
 
 func (c *AccountsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12288,7 +12288,7 @@
 
 func (c *AccountsLinkCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12459,7 +12459,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12635,7 +12635,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12787,7 +12787,7 @@
 
 func (c *AccountstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12932,7 +12932,7 @@
 
 func (c *AccountstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13114,7 +13114,7 @@
 
 func (c *AccountstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13293,7 +13293,7 @@
 
 func (c *AccounttaxCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13435,7 +13435,7 @@
 
 func (c *AccounttaxGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13602,7 +13602,7 @@
 
 func (c *AccounttaxListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13778,7 +13778,7 @@
 
 func (c *AccounttaxUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13938,7 +13938,7 @@
 
 func (c *DatafeedsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14078,7 +14078,7 @@
 
 func (c *DatafeedsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14204,7 +14204,7 @@
 
 func (c *DatafeedsFetchnowCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14361,7 +14361,7 @@
 
 func (c *DatafeedsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14513,7 +14513,7 @@
 
 func (c *DatafeedsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14681,7 +14681,7 @@
 
 func (c *DatafeedsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14858,7 +14858,7 @@
 
 func (c *DatafeedsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15010,7 +15010,7 @@
 
 func (c *DatafeedstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15167,7 +15167,7 @@
 
 func (c *DatafeedstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15344,7 +15344,7 @@
 
 func (c *DatafeedstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15518,7 +15518,7 @@
 
 func (c *InventoryCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15662,7 +15662,7 @@
 
 func (c *InventorySetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15829,7 +15829,7 @@
 
 func (c *LiasettingsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15971,7 +15971,7 @@
 
 func (c *LiasettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16126,7 +16126,7 @@
 
 func (c *LiasettingsGetaccessiblegmbaccountsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16295,7 +16295,7 @@
 
 func (c *LiasettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16469,7 +16469,7 @@
 
 func (c *LiasettingsListposdataprovidersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16591,7 +16591,7 @@
 
 func (c *LiasettingsRequestgmbaccessCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16742,7 +16742,7 @@
 
 func (c *LiasettingsRequestinventoryverificationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16897,7 +16897,7 @@
 
 func (c *LiasettingsSetinventoryverificationcontactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17084,7 +17084,7 @@
 
 func (c *LiasettingsSetposdataproviderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17253,7 +17253,7 @@
 
 func (c *LiasettingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17409,7 +17409,7 @@
 
 func (c *OrderinvoicesCreatechargeinvoiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17564,7 +17564,7 @@
 
 func (c *OrderinvoicesCreaterefundinvoiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17746,7 +17746,7 @@
 
 func (c *OrderreportsListdisbursementsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17960,7 +17960,7 @@
 
 func (c *OrderreportsListtransactionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18158,7 +18158,7 @@
 
 func (c *OrderreturnsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18352,7 +18352,7 @@
 
 func (c *OrderreturnsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18543,7 +18543,7 @@
 
 func (c *OrdersAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18691,7 +18691,7 @@
 
 func (c *OrdersAdvancetestorderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18832,7 +18832,7 @@
 
 func (c *OrdersCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18981,7 +18981,7 @@
 
 func (c *OrdersCancellineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19131,7 +19131,7 @@
 
 func (c *OrdersCanceltestorderbycustomerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19279,7 +19279,7 @@
 
 func (c *OrdersCreatetestorderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19420,7 +19420,7 @@
 
 func (c *OrdersCreatetestreturnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19566,7 +19566,7 @@
 
 func (c *OrdersCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19701,7 +19701,7 @@
 
 func (c *OrdersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19854,7 +19854,7 @@
 
 func (c *OrdersGetbymerchantorderidCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20016,7 +20016,7 @@
 
 func (c *OrdersGettestordertemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20187,7 +20187,7 @@
 
 func (c *OrdersInstorerefundlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20420,7 +20420,7 @@
 
 func (c *OrdersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20640,7 +20640,7 @@
 
 func (c *OrdersRefundCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20789,7 +20789,7 @@
 
 func (c *OrdersRejectreturnlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20939,7 +20939,7 @@
 
 func (c *OrdersReturnlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21089,7 +21089,7 @@
 
 func (c *OrdersReturnrefundlineitemCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21244,7 +21244,7 @@
 
 func (c *OrdersSetlineitemmetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21394,7 +21394,7 @@
 
 func (c *OrdersShiplineitemsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21544,7 +21544,7 @@
 
 func (c *OrdersUpdatelineitemshippingdetailsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21696,7 +21696,7 @@
 
 func (c *OrdersUpdatemerchantorderidCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21847,7 +21847,7 @@
 
 func (c *OrdersUpdateshipmentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22000,7 +22000,7 @@
 
 func (c *PosCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22141,7 +22141,7 @@
 
 func (c *PosDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22279,7 +22279,7 @@
 
 func (c *PosGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22440,7 +22440,7 @@
 
 func (c *PosInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22603,7 +22603,7 @@
 
 func (c *PosInventoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22767,7 +22767,7 @@
 
 func (c *PosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22920,7 +22920,7 @@
 
 func (c *PosSaleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23080,7 +23080,7 @@
 
 func (c *ProductsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23219,7 +23219,7 @@
 
 func (c *ProductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23346,7 +23346,7 @@
 
 func (c *ProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23498,7 +23498,7 @@
 
 func (c *ProductsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23674,7 +23674,7 @@
 
 func (c *ProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23852,7 +23852,7 @@
 
 func (c *ProductstatusesCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24011,7 +24011,7 @@
 
 func (c *ProductstatusesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24214,7 +24214,7 @@
 
 func (c *ProductstatusesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24403,7 +24403,7 @@
 
 func (c *ShippingsettingsCustombatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24546,7 +24546,7 @@
 
 func (c *ShippingsettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24699,7 +24699,7 @@
 
 func (c *ShippingsettingsGetsupportedcarriersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24844,7 +24844,7 @@
 
 func (c *ShippingsettingsGetsupportedholidaysCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25005,7 +25005,7 @@
 
 func (c *ShippingsettingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25181,7 +25181,7 @@
 
 func (c *ShippingsettingsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/customsearch/v1/customsearch-gen.go b/customsearch/v1/customsearch-gen.go
index 0050ca1..835e503 100644
--- a/customsearch/v1/customsearch-gen.go
+++ b/customsearch/v1/customsearch-gen.go
@@ -1023,7 +1023,7 @@
 
 func (c *CseListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1797,7 +1797,7 @@
 
 func (c *CseSiterestrictListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dataflow/v1b3/dataflow-gen.go b/dataflow/v1b3/dataflow-gen.go
index 0c135e3..f000026 100644
--- a/dataflow/v1b3/dataflow-gen.go
+++ b/dataflow/v1b3/dataflow-gen.go
@@ -7438,7 +7438,7 @@
 
 func (c *ProjectsWorkerMessagesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7643,7 +7643,7 @@
 
 func (c *ProjectsJobsAggregatedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7879,7 +7879,7 @@
 
 func (c *ProjectsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8086,7 +8086,7 @@
 
 func (c *ProjectsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8286,7 +8286,7 @@
 
 func (c *ProjectsJobsGetMetricsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8517,7 +8517,7 @@
 
 func (c *ProjectsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8735,7 +8735,7 @@
 
 func (c *ProjectsJobsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8893,7 +8893,7 @@
 
 func (c *ProjectsJobsDebugGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9045,7 +9045,7 @@
 
 func (c *ProjectsJobsDebugSendCaptureCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9276,7 +9276,7 @@
 
 func (c *ProjectsJobsMessagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9485,7 +9485,7 @@
 
 func (c *ProjectsJobsWorkItemsLeaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9638,7 +9638,7 @@
 
 func (c *ProjectsJobsWorkItemsReportStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9790,7 +9790,7 @@
 
 func (c *ProjectsLocationsWorkerMessagesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9972,7 +9972,7 @@
 
 func (c *ProjectsLocationsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10174,7 +10174,7 @@
 
 func (c *ProjectsLocationsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10369,7 +10369,7 @@
 
 func (c *ProjectsLocationsJobsGetMetricsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10595,7 +10595,7 @@
 
 func (c *ProjectsLocationsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10808,7 +10808,7 @@
 
 func (c *ProjectsLocationsJobsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10971,7 +10971,7 @@
 
 func (c *ProjectsLocationsJobsDebugGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11133,7 +11133,7 @@
 
 func (c *ProjectsLocationsJobsDebugSendCaptureCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11364,7 +11364,7 @@
 
 func (c *ProjectsLocationsJobsMessagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11578,7 +11578,7 @@
 
 func (c *ProjectsLocationsJobsWorkItemsLeaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11741,7 +11741,7 @@
 
 func (c *ProjectsLocationsJobsWorkItemsReportStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11922,7 +11922,7 @@
 
 func (c *ProjectsLocationsSqlValidateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12072,7 +12072,7 @@
 
 func (c *ProjectsLocationsTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12252,7 +12252,7 @@
 
 func (c *ProjectsLocationsTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12447,7 +12447,7 @@
 
 func (c *ProjectsLocationsTemplatesLaunchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12617,7 +12617,7 @@
 
 func (c *ProjectsTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12797,7 +12797,7 @@
 
 func (c *ProjectsTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12997,7 +12997,7 @@
 
 func (c *ProjectsTemplatesLaunchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/datafusion/v1beta1/datafusion-gen.go b/datafusion/v1beta1/datafusion-gen.go
index 50e72dd..aa426bf 100644
--- a/datafusion/v1beta1/datafusion-gen.go
+++ b/datafusion/v1beta1/datafusion-gen.go
@@ -1862,7 +1862,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2028,7 +2028,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2208,7 +2208,7 @@
 
 func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2351,7 +2351,7 @@
 
 func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2492,7 +2492,7 @@
 
 func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2657,7 +2657,7 @@
 
 func (c *ProjectsLocationsInstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2836,7 +2836,7 @@
 
 func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3027,7 +3027,7 @@
 
 func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3174,7 +3174,7 @@
 
 func (c *ProjectsLocationsInstancesRestartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3319,7 +3319,7 @@
 
 func (c *ProjectsLocationsInstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3469,7 +3469,7 @@
 
 func (c *ProjectsLocationsInstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3610,7 +3610,7 @@
 
 func (c *ProjectsLocationsInstancesUpgradeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3767,7 +3767,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3911,7 +3911,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4056,7 +4056,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4237,7 +4237,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dataproc/v1/dataproc-gen.go b/dataproc/v1/dataproc-gen.go
index 8520d7a..cb2d6ec 100644
--- a/dataproc/v1/dataproc-gen.go
+++ b/dataproc/v1/dataproc-gen.go
@@ -3719,7 +3719,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3858,7 +3858,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3999,7 +3999,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4136,7 +4136,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4300,7 +4300,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4468,7 +4468,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4613,7 +4613,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4754,7 +4754,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4894,7 +4894,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5041,7 +5041,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5197,7 +5197,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5340,7 +5340,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5487,7 +5487,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5649,7 +5649,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5817,7 +5817,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5985,7 +5985,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6130,7 +6130,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6271,7 +6271,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6411,7 +6411,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6550,7 +6550,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6691,7 +6691,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6828,7 +6828,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6992,7 +6992,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7160,7 +7160,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7305,7 +7305,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7446,7 +7446,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7603,7 +7603,7 @@
 
 func (c *ProjectsRegionsClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7780,7 +7780,7 @@
 
 func (c *ProjectsRegionsClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7944,7 +7944,7 @@
 
 func (c *ProjectsRegionsClustersDiagnoseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8112,7 +8112,7 @@
 
 func (c *ProjectsRegionsClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8264,7 +8264,7 @@
 
 func (c *ProjectsRegionsClustersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8447,7 +8447,7 @@
 
 func (c *ProjectsRegionsClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8698,7 +8698,7 @@
 
 func (c *ProjectsRegionsClustersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8871,7 +8871,7 @@
 
 func (c *ProjectsRegionsClustersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9016,7 +9016,7 @@
 
 func (c *ProjectsRegionsClustersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9162,7 +9162,7 @@
 
 func (c *ProjectsRegionsJobsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9320,7 +9320,7 @@
 
 func (c *ProjectsRegionsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9480,7 +9480,7 @@
 
 func (c *ProjectsRegionsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9632,7 +9632,7 @@
 
 func (c *ProjectsRegionsJobsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9831,7 +9831,7 @@
 
 func (c *ProjectsRegionsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10041,7 +10041,7 @@
 
 func (c *ProjectsRegionsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10203,7 +10203,7 @@
 
 func (c *ProjectsRegionsJobsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10345,7 +10345,7 @@
 
 func (c *ProjectsRegionsJobsSubmitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10497,7 +10497,7 @@
 
 func (c *ProjectsRegionsJobsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10644,7 +10644,7 @@
 
 func (c *ProjectsRegionsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10777,7 +10777,7 @@
 
 func (c *ProjectsRegionsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10920,7 +10920,7 @@
 
 func (c *ProjectsRegionsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11057,7 +11057,7 @@
 
 func (c *ProjectsRegionsOperationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11236,7 +11236,7 @@
 
 func (c *ProjectsRegionsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11409,7 +11409,7 @@
 
 func (c *ProjectsRegionsOperationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11554,7 +11554,7 @@
 
 func (c *ProjectsRegionsOperationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11694,7 +11694,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11841,7 +11841,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11997,7 +11997,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12140,7 +12140,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12287,7 +12287,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12449,7 +12449,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12617,7 +12617,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12785,7 +12785,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12930,7 +12930,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13071,7 +13071,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dataproc/v1beta2/dataproc-gen.go b/dataproc/v1beta2/dataproc-gen.go
index 2aec162..f7179c8 100644
--- a/dataproc/v1beta2/dataproc-gen.go
+++ b/dataproc/v1beta2/dataproc-gen.go
@@ -3944,7 +3944,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4083,7 +4083,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4224,7 +4224,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4381,7 +4381,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4546,7 +4546,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4714,7 +4714,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4859,7 +4859,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5000,7 +5000,7 @@
 
 func (c *ProjectsLocationsAutoscalingPoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5140,7 +5140,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5287,7 +5287,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5443,7 +5443,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5606,7 +5606,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5754,7 +5754,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5923,7 +5923,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6096,7 +6096,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6264,7 +6264,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6409,7 +6409,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6550,7 +6550,7 @@
 
 func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6690,7 +6690,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6829,7 +6829,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6970,7 +6970,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7127,7 +7127,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7292,7 +7292,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7460,7 +7460,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7605,7 +7605,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7746,7 +7746,7 @@
 
 func (c *ProjectsRegionsAutoscalingPoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7903,7 +7903,7 @@
 
 func (c *ProjectsRegionsClustersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8080,7 +8080,7 @@
 
 func (c *ProjectsRegionsClustersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8243,7 +8243,7 @@
 
 func (c *ProjectsRegionsClustersDiagnoseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8411,7 +8411,7 @@
 
 func (c *ProjectsRegionsClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8583,7 +8583,7 @@
 
 func (c *ProjectsRegionsClustersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8767,7 +8767,7 @@
 
 func (c *ProjectsRegionsClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9054,7 +9054,7 @@
 
 func (c *ProjectsRegionsClustersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9227,7 +9227,7 @@
 
 func (c *ProjectsRegionsClustersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9372,7 +9372,7 @@
 
 func (c *ProjectsRegionsClustersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9518,7 +9518,7 @@
 
 func (c *ProjectsRegionsJobsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9676,7 +9676,7 @@
 
 func (c *ProjectsRegionsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9836,7 +9836,7 @@
 
 func (c *ProjectsRegionsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10008,7 +10008,7 @@
 
 func (c *ProjectsRegionsJobsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10208,7 +10208,7 @@
 
 func (c *ProjectsRegionsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10418,7 +10418,7 @@
 
 func (c *ProjectsRegionsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10580,7 +10580,7 @@
 
 func (c *ProjectsRegionsJobsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10722,7 +10722,7 @@
 
 func (c *ProjectsRegionsJobsSubmitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10874,7 +10874,7 @@
 
 func (c *ProjectsRegionsJobsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11021,7 +11021,7 @@
 
 func (c *ProjectsRegionsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11154,7 +11154,7 @@
 
 func (c *ProjectsRegionsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11297,7 +11297,7 @@
 
 func (c *ProjectsRegionsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11454,7 +11454,7 @@
 
 func (c *ProjectsRegionsOperationsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11634,7 +11634,7 @@
 
 func (c *ProjectsRegionsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11807,7 +11807,7 @@
 
 func (c *ProjectsRegionsOperationsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11952,7 +11952,7 @@
 
 func (c *ProjectsRegionsOperationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12092,7 +12092,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12239,7 +12239,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12395,7 +12395,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12558,7 +12558,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12706,7 +12706,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12875,7 +12875,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13048,7 +13048,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13216,7 +13216,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13361,7 +13361,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13502,7 +13502,7 @@
 
 func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/datastore/v1/datastore-gen.go b/datastore/v1/datastore-gen.go
index 2d4d203..2faf04b 100644
--- a/datastore/v1/datastore-gen.go
+++ b/datastore/v1/datastore-gen.go
@@ -2936,7 +2936,7 @@
 
 func (c *ProjectsAllocateIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3076,7 +3076,7 @@
 
 func (c *ProjectsBeginTransactionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3218,7 +3218,7 @@
 
 func (c *ProjectsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3372,7 +3372,7 @@
 
 func (c *ProjectsExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3521,7 +3521,7 @@
 
 func (c *ProjectsImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3661,7 +3661,7 @@
 
 func (c *ProjectsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3803,7 +3803,7 @@
 
 func (c *ProjectsReserveIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3943,7 +3943,7 @@
 
 func (c *ProjectsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4083,7 +4083,7 @@
 
 func (c *ProjectsRunQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4240,7 +4240,7 @@
 
 func (c *ProjectsIndexesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4394,7 +4394,7 @@
 
 func (c *ProjectsIndexesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4545,7 +4545,7 @@
 
 func (c *ProjectsIndexesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4722,7 +4722,7 @@
 
 func (c *ProjectsIndexesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4910,7 +4910,7 @@
 
 func (c *ProjectsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5047,7 +5047,7 @@
 
 func (c *ProjectsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5193,7 +5193,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5375,7 +5375,7 @@
 
 func (c *ProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/datastore/v1beta1/datastore-gen.go b/datastore/v1beta1/datastore-gen.go
index 20369a2..0fc63fc 100644
--- a/datastore/v1beta1/datastore-gen.go
+++ b/datastore/v1beta1/datastore-gen.go
@@ -1090,7 +1090,7 @@
 
 func (c *ProjectsExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1239,7 +1239,7 @@
 
 func (c *ProjectsImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/datastore/v1beta3/datastore-gen.go b/datastore/v1beta3/datastore-gen.go
index ef87f69..a5aaafc 100644
--- a/datastore/v1beta3/datastore-gen.go
+++ b/datastore/v1beta3/datastore-gen.go
@@ -2438,7 +2438,7 @@
 
 func (c *ProjectsAllocateIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2578,7 +2578,7 @@
 
 func (c *ProjectsBeginTransactionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2720,7 +2720,7 @@
 
 func (c *ProjectsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2860,7 +2860,7 @@
 
 func (c *ProjectsLookupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3002,7 +3002,7 @@
 
 func (c *ProjectsReserveIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3142,7 +3142,7 @@
 
 func (c *ProjectsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3282,7 +3282,7 @@
 
 func (c *ProjectsRunQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/deploymentmanager/v0.alpha/deploymentmanager-gen.go b/deploymentmanager/v0.alpha/deploymentmanager-gen.go
index 7ffd78b..79071e1 100644
--- a/deploymentmanager/v0.alpha/deploymentmanager-gen.go
+++ b/deploymentmanager/v0.alpha/deploymentmanager-gen.go
@@ -3224,7 +3224,7 @@
 
 func (c *CompositeTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3376,7 +3376,7 @@
 
 func (c *CompositeTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3522,7 +3522,7 @@
 
 func (c *CompositeTypesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3734,7 +3734,7 @@
 
 func (c *CompositeTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3918,7 +3918,7 @@
 
 func (c *CompositeTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4069,7 +4069,7 @@
 
 func (c *CompositeTypesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4221,7 +4221,7 @@
 
 func (c *DeploymentsCancelPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4382,7 +4382,7 @@
 
 func (c *DeploymentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4547,7 +4547,7 @@
 
 func (c *DeploymentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4705,7 +4705,7 @@
 
 func (c *DeploymentsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4876,7 +4876,7 @@
 
 func (c *DeploymentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5109,7 +5109,7 @@
 
 func (c *DeploymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5332,7 +5332,7 @@
 
 func (c *DeploymentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5520,7 +5520,7 @@
 
 func (c *DeploymentsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5673,7 +5673,7 @@
 
 func (c *DeploymentsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5825,7 +5825,7 @@
 
 func (c *DeploymentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6016,7 +6016,7 @@
 
 func (c *DeploymentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6214,7 +6214,7 @@
 
 func (c *ManifestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6443,7 +6443,7 @@
 
 func (c *ManifestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6644,7 +6644,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6861,7 +6861,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7055,7 +7055,7 @@
 
 func (c *ResourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7283,7 +7283,7 @@
 
 func (c *ResourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7473,7 +7473,7 @@
 
 func (c *TypeProvidersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7625,7 +7625,7 @@
 
 func (c *TypeProvidersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7784,7 +7784,7 @@
 
 func (c *TypeProvidersGetTypeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7938,7 +7938,7 @@
 
 func (c *TypeProvidersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8150,7 +8150,7 @@
 
 func (c *TypeProvidersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8405,7 +8405,7 @@
 
 func (c *TypeProvidersListTypesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8597,7 +8597,7 @@
 
 func (c *TypeProvidersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8748,7 +8748,7 @@
 
 func (c *TypeProvidersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8897,7 +8897,7 @@
 
 func (c *TypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9049,7 +9049,7 @@
 
 func (c *TypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9195,7 +9195,7 @@
 
 func (c *TypesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9407,7 +9407,7 @@
 
 func (c *TypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9590,7 +9590,7 @@
 
 func (c *TypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9741,7 +9741,7 @@
 
 func (c *TypesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/deploymentmanager/v2/deploymentmanager-gen.go b/deploymentmanager/v2/deploymentmanager-gen.go
index 373c0de..49be0fe 100644
--- a/deploymentmanager/v2/deploymentmanager-gen.go
+++ b/deploymentmanager/v2/deploymentmanager-gen.go
@@ -2221,7 +2221,7 @@
 
 func (c *DeploymentsCancelPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2382,7 +2382,7 @@
 
 func (c *DeploymentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2547,7 +2547,7 @@
 
 func (c *DeploymentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2705,7 +2705,7 @@
 
 func (c *DeploymentsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2875,7 +2875,7 @@
 
 func (c *DeploymentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3106,7 +3106,7 @@
 
 func (c *DeploymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3328,7 +3328,7 @@
 
 func (c *DeploymentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3514,7 +3514,7 @@
 
 func (c *DeploymentsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3667,7 +3667,7 @@
 
 func (c *DeploymentsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3819,7 +3819,7 @@
 
 func (c *DeploymentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4009,7 +4009,7 @@
 
 func (c *DeploymentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4205,7 +4205,7 @@
 
 func (c *ManifestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4434,7 +4434,7 @@
 
 func (c *ManifestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4635,7 +4635,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4852,7 +4852,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5046,7 +5046,7 @@
 
 func (c *ResourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5274,7 +5274,7 @@
 
 func (c *ResourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5536,7 +5536,7 @@
 
 func (c *TypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/deploymentmanager/v2beta/deploymentmanager-gen.go b/deploymentmanager/v2beta/deploymentmanager-gen.go
index 25ebd4d..c3e17d8 100644
--- a/deploymentmanager/v2beta/deploymentmanager-gen.go
+++ b/deploymentmanager/v2beta/deploymentmanager-gen.go
@@ -3117,7 +3117,7 @@
 
 func (c *CompositeTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3269,7 +3269,7 @@
 
 func (c *CompositeTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3415,7 +3415,7 @@
 
 func (c *CompositeTypesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3627,7 +3627,7 @@
 
 func (c *CompositeTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3811,7 +3811,7 @@
 
 func (c *CompositeTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3962,7 +3962,7 @@
 
 func (c *CompositeTypesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4114,7 +4114,7 @@
 
 func (c *DeploymentsCancelPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4275,7 +4275,7 @@
 
 func (c *DeploymentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4440,7 +4440,7 @@
 
 func (c *DeploymentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4598,7 +4598,7 @@
 
 func (c *DeploymentsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4769,7 +4769,7 @@
 
 func (c *DeploymentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5002,7 +5002,7 @@
 
 func (c *DeploymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5225,7 +5225,7 @@
 
 func (c *DeploymentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5413,7 +5413,7 @@
 
 func (c *DeploymentsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5566,7 +5566,7 @@
 
 func (c *DeploymentsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5718,7 +5718,7 @@
 
 func (c *DeploymentsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5909,7 +5909,7 @@
 
 func (c *DeploymentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6107,7 +6107,7 @@
 
 func (c *ManifestsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6336,7 +6336,7 @@
 
 func (c *ManifestsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6537,7 +6537,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6754,7 +6754,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6948,7 +6948,7 @@
 
 func (c *ResourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7176,7 +7176,7 @@
 
 func (c *ResourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7366,7 +7366,7 @@
 
 func (c *TypeProvidersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7518,7 +7518,7 @@
 
 func (c *TypeProvidersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7677,7 +7677,7 @@
 
 func (c *TypeProvidersGetTypeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7831,7 +7831,7 @@
 
 func (c *TypeProvidersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8043,7 +8043,7 @@
 
 func (c *TypeProvidersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8298,7 +8298,7 @@
 
 func (c *TypeProvidersListTypesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8490,7 +8490,7 @@
 
 func (c *TypeProvidersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8641,7 +8641,7 @@
 
 func (c *TypeProvidersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8862,7 +8862,7 @@
 
 func (c *TypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dfareporting/v3.3/dfareporting-gen.go b/dfareporting/v3.3/dfareporting-gen.go
index 72805ac..79c13d62 100644
--- a/dfareporting/v3.3/dfareporting-gen.go
+++ b/dfareporting/v3.3/dfareporting-gen.go
@@ -14274,7 +14274,7 @@
 
 func (c *AccountActiveAdSummariesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14428,7 +14428,7 @@
 
 func (c *AccountPermissionGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14580,7 +14580,7 @@
 
 func (c *AccountPermissionGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14726,7 +14726,7 @@
 
 func (c *AccountPermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14878,7 +14878,7 @@
 
 func (c *AccountPermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15023,7 +15023,7 @@
 
 func (c *AccountUserProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15166,7 +15166,7 @@
 
 func (c *AccountUserProfilesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15397,7 +15397,7 @@
 
 func (c *AccountUserProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15625,7 +15625,7 @@
 
 func (c *AccountUserProfilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15772,7 +15772,7 @@
 
 func (c *AccountUserProfilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15922,7 +15922,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16143,7 +16143,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16359,7 +16359,7 @@
 
 func (c *AccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16506,7 +16506,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16656,7 +16656,7 @@
 
 func (c *AdsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16799,7 +16799,7 @@
 
 func (c *AdsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17182,7 +17182,7 @@
 
 func (c *AdsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17524,7 +17524,7 @@
 
 func (c *AdsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17671,7 +17671,7 @@
 
 func (c *AdsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17810,7 +17810,7 @@
 
 func (c *AdvertiserGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17933,7 +17933,7 @@
 
 func (c *AdvertiserGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18076,7 +18076,7 @@
 
 func (c *AdvertiserGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18286,7 +18286,7 @@
 
 func (c *AdvertiserGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18497,7 +18497,7 @@
 
 func (c *AdvertiserGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18644,7 +18644,7 @@
 
 func (c *AdvertiserGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18794,7 +18794,7 @@
 
 func (c *AdvertiserLandingPagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18937,7 +18937,7 @@
 
 func (c *AdvertiserLandingPagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19182,7 +19182,7 @@
 
 func (c *AdvertiserLandingPagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19419,7 +19419,7 @@
 
 func (c *AdvertiserLandingPagesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19566,7 +19566,7 @@
 
 func (c *AdvertiserLandingPagesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19716,7 +19716,7 @@
 
 func (c *AdvertisersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19859,7 +19859,7 @@
 
 func (c *AdvertisersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20124,7 +20124,7 @@
 
 func (c *AdvertisersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20378,7 +20378,7 @@
 
 func (c *AdvertisersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20525,7 +20525,7 @@
 
 func (c *AdvertisersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20673,7 +20673,7 @@
 
 func (c *BrowsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20811,7 +20811,7 @@
 
 func (c *CampaignCreativeAssociationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20996,7 +20996,7 @@
 
 func (c *CampaignCreativeAssociationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21201,7 +21201,7 @@
 
 func (c *CampaignsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21344,7 +21344,7 @@
 
 func (c *CampaignsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21618,7 +21618,7 @@
 
 func (c *CampaignsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21872,7 +21872,7 @@
 
 func (c *CampaignsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22019,7 +22019,7 @@
 
 func (c *CampaignsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22169,7 +22169,7 @@
 
 func (c *ChangeLogsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22477,7 +22477,7 @@
 
 func (c *ChangeLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22863,7 +22863,7 @@
 
 func (c *CitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23034,7 +23034,7 @@
 
 func (c *ConnectionTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23186,7 +23186,7 @@
 
 func (c *ConnectionTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23320,7 +23320,7 @@
 
 func (c *ContentCategoriesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23443,7 +23443,7 @@
 
 func (c *ContentCategoriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23586,7 +23586,7 @@
 
 func (c *ContentCategoriesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23796,7 +23796,7 @@
 
 func (c *ContentCategoriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24007,7 +24007,7 @@
 
 func (c *ContentCategoriesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24154,7 +24154,7 @@
 
 func (c *ContentCategoriesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24293,7 +24293,7 @@
 
 func (c *ConversionsBatchinsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24432,7 +24432,7 @@
 
 func (c *ConversionsBatchupdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24582,7 +24582,7 @@
 
 func (c *CountriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24734,7 +24734,7 @@
 
 func (c *CountriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24910,7 +24910,7 @@
 
 func (c *CreativeAssetsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25105,7 +25105,7 @@
 
 func (c *CreativeFieldValuesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25239,7 +25239,7 @@
 
 func (c *CreativeFieldValuesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25393,7 +25393,7 @@
 
 func (c *CreativeFieldValuesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25608,7 +25608,7 @@
 
 func (c *CreativeFieldValuesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25830,7 +25830,7 @@
 
 func (c *CreativeFieldValuesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25988,7 +25988,7 @@
 
 func (c *CreativeFieldValuesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26136,7 +26136,7 @@
 
 func (c *CreativeFieldsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26259,7 +26259,7 @@
 
 func (c *CreativeFieldsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26402,7 +26402,7 @@
 
 func (c *CreativeFieldsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26623,7 +26623,7 @@
 
 func (c *CreativeFieldsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26841,7 +26841,7 @@
 
 func (c *CreativeFieldsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26988,7 +26988,7 @@
 
 func (c *CreativeFieldsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27138,7 +27138,7 @@
 
 func (c *CreativeGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27281,7 +27281,7 @@
 
 func (c *CreativeGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27509,7 +27509,7 @@
 
 func (c *CreativeGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27735,7 +27735,7 @@
 
 func (c *CreativeGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27882,7 +27882,7 @@
 
 func (c *CreativeGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28032,7 +28032,7 @@
 
 func (c *CreativesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28175,7 +28175,7 @@
 
 func (c *CreativesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28498,7 +28498,7 @@
 
 func (c *CreativesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28825,7 +28825,7 @@
 
 func (c *CreativesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28972,7 +28972,7 @@
 
 func (c *CreativesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -29126,7 +29126,7 @@
 
 func (c *DimensionValuesQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -29311,7 +29311,7 @@
 
 func (c *DirectorySitesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -29454,7 +29454,7 @@
 
 func (c *DirectorySitesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -29703,7 +29703,7 @@
 
 func (c *DirectorySitesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -29939,7 +29939,7 @@
 
 func (c *DynamicTargetingKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30081,7 +30081,7 @@
 
 func (c *DynamicTargetingKeysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30263,7 +30263,7 @@
 
 func (c *DynamicTargetingKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30432,7 +30432,7 @@
 
 func (c *EventTagsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30555,7 +30555,7 @@
 
 func (c *EventTagsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30698,7 +30698,7 @@
 
 func (c *EventTagsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -30954,7 +30954,7 @@
 
 func (c *EventTagsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -31174,7 +31174,7 @@
 
 func (c *EventTagsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -31321,7 +31321,7 @@
 
 func (c *EventTagsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -31472,7 +31472,7 @@
 
 func (c *FilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -31689,7 +31689,7 @@
 
 func (c *FilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -31902,7 +31902,7 @@
 
 func (c *FloodlightActivitiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32020,7 +32020,7 @@
 
 func (c *FloodlightActivitiesGeneratetagCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32169,7 +32169,7 @@
 
 func (c *FloodlightActivitiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32312,7 +32312,7 @@
 
 func (c *FloodlightActivitiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32588,7 +32588,7 @@
 
 func (c *FloodlightActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32846,7 +32846,7 @@
 
 func (c *FloodlightActivitiesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -32993,7 +32993,7 @@
 
 func (c *FloodlightActivitiesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -33143,7 +33143,7 @@
 
 func (c *FloodlightActivityGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -33286,7 +33286,7 @@
 
 func (c *FloodlightActivityGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -33527,7 +33527,7 @@
 
 func (c *FloodlightActivityGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -33764,7 +33764,7 @@
 
 func (c *FloodlightActivityGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -33911,7 +33911,7 @@
 
 func (c *FloodlightActivityGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34061,7 +34061,7 @@
 
 func (c *FloodlightConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34226,7 +34226,7 @@
 
 func (c *FloodlightConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34370,7 +34370,7 @@
 
 func (c *FloodlightConfigurationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34517,7 +34517,7 @@
 
 func (c *FloodlightConfigurationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34669,7 +34669,7 @@
 
 func (c *InventoryItemsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -34920,7 +34920,7 @@
 
 func (c *InventoryItemsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -35174,7 +35174,7 @@
 
 func (c *LanguagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -35317,7 +35317,7 @@
 
 func (c *MetrosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -35462,7 +35462,7 @@
 
 func (c *MobileAppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -35658,7 +35658,7 @@
 
 func (c *MobileAppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -35865,7 +35865,7 @@
 
 func (c *MobileCarriersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36017,7 +36017,7 @@
 
 func (c *MobileCarriersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36162,7 +36162,7 @@
 
 func (c *OperatingSystemVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36314,7 +36314,7 @@
 
 func (c *OperatingSystemVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36460,7 +36460,7 @@
 
 func (c *OperatingSystemsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36612,7 +36612,7 @@
 
 func (c *OperatingSystemsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -36759,7 +36759,7 @@
 
 func (c *OrderDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -37013,7 +37013,7 @@
 
 func (c *OrderDocumentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -37263,7 +37263,7 @@
 
 func (c *OrdersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -37497,7 +37497,7 @@
 
 func (c *OrdersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -37733,7 +37733,7 @@
 
 func (c *PlacementGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -37876,7 +37876,7 @@
 
 func (c *PlacementGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38226,7 +38226,7 @@
 
 func (c *PlacementGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38539,7 +38539,7 @@
 
 func (c *PlacementGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38686,7 +38686,7 @@
 
 func (c *PlacementGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38825,7 +38825,7 @@
 
 func (c *PlacementStrategiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -38948,7 +38948,7 @@
 
 func (c *PlacementStrategiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39091,7 +39091,7 @@
 
 func (c *PlacementStrategiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39301,7 +39301,7 @@
 
 func (c *PlacementStrategiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39512,7 +39512,7 @@
 
 func (c *PlacementStrategiesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39659,7 +39659,7 @@
 
 func (c *PlacementStrategiesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -39845,7 +39845,7 @@
 
 func (c *PlacementsGeneratetagsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40048,7 +40048,7 @@
 
 func (c *PlacementsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40191,7 +40191,7 @@
 
 func (c *PlacementsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40577,7 +40577,7 @@
 
 func (c *PlacementsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -40926,7 +40926,7 @@
 
 func (c *PlacementsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41073,7 +41073,7 @@
 
 func (c *PlacementsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41223,7 +41223,7 @@
 
 func (c *PlatformTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41375,7 +41375,7 @@
 
 func (c *PlatformTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41520,7 +41520,7 @@
 
 func (c *PostalCodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41671,7 +41671,7 @@
 
 func (c *PostalCodesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -41816,7 +41816,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42040,7 +42040,7 @@
 
 func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42265,7 +42265,7 @@
 
 func (c *RegionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42410,7 +42410,7 @@
 
 func (c *RemarketingListSharesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42555,7 +42555,7 @@
 
 func (c *RemarketingListSharesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42702,7 +42702,7 @@
 
 func (c *RemarketingListSharesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42852,7 +42852,7 @@
 
 func (c *RemarketingListsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -42995,7 +42995,7 @@
 
 func (c *RemarketingListsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43209,7 +43209,7 @@
 
 func (c *RemarketingListsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43432,7 +43432,7 @@
 
 func (c *RemarketingListsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43579,7 +43579,7 @@
 
 func (c *RemarketingListsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43718,7 +43718,7 @@
 
 func (c *ReportsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43841,7 +43841,7 @@
 
 func (c *ReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -43984,7 +43984,7 @@
 
 func (c *ReportsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44180,7 +44180,7 @@
 
 func (c *ReportsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44395,7 +44395,7 @@
 
 func (c *ReportsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44550,7 +44550,7 @@
 
 func (c *ReportsRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44698,7 +44698,7 @@
 
 func (c *ReportsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -44848,7 +44848,7 @@
 
 func (c *ReportsCompatibleFieldsQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45000,7 +45000,7 @@
 
 func (c *ReportsFilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45216,7 +45216,7 @@
 
 func (c *ReportsFilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45433,7 +45433,7 @@
 
 func (c *SitesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45576,7 +45576,7 @@
 
 func (c *SitesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -45858,7 +45858,7 @@
 
 func (c *SitesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46119,7 +46119,7 @@
 
 func (c *SitesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46266,7 +46266,7 @@
 
 func (c *SitesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46416,7 +46416,7 @@
 
 func (c *SizesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46559,7 +46559,7 @@
 
 func (c *SizesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46742,7 +46742,7 @@
 
 func (c *SizesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -46915,7 +46915,7 @@
 
 func (c *SubaccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47058,7 +47058,7 @@
 
 func (c *SubaccountsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47267,7 +47267,7 @@
 
 func (c *SubaccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47478,7 +47478,7 @@
 
 func (c *SubaccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47625,7 +47625,7 @@
 
 func (c *SubaccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47775,7 +47775,7 @@
 
 func (c *TargetableRemarketingListsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -47985,7 +47985,7 @@
 
 func (c *TargetableRemarketingListsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48212,7 +48212,7 @@
 
 func (c *TargetingTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48355,7 +48355,7 @@
 
 func (c *TargetingTemplatesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48571,7 +48571,7 @@
 
 func (c *TargetingTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48788,7 +48788,7 @@
 
 func (c *TargetingTemplatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -48935,7 +48935,7 @@
 
 func (c *TargetingTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49083,7 +49083,7 @@
 
 func (c *UserProfilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49225,7 +49225,7 @@
 
 func (c *UserProfilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49356,7 +49356,7 @@
 
 func (c *UserRolePermissionGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49508,7 +49508,7 @@
 
 func (c *UserRolePermissionGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49654,7 +49654,7 @@
 
 func (c *UserRolePermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49817,7 +49817,7 @@
 
 func (c *UserRolePermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -49958,7 +49958,7 @@
 
 func (c *UserRolesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50081,7 +50081,7 @@
 
 func (c *UserRolesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50224,7 +50224,7 @@
 
 func (c *UserRolesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50448,7 +50448,7 @@
 
 func (c *UserRolesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50670,7 +50670,7 @@
 
 func (c *UserRolesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50817,7 +50817,7 @@
 
 func (c *UserRolesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -50967,7 +50967,7 @@
 
 func (c *VideoFormatsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -51119,7 +51119,7 @@
 
 func (c *VideoFormatsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index e94ea2d..c3604f7 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -7586,7 +7586,7 @@
 
 func (c *ProjectsAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7731,7 +7731,7 @@
 
 func (c *ProjectsDeleteAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7873,7 +7873,7 @@
 
 func (c *ProjectsGetAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8011,7 +8011,7 @@
 
 func (c *ProjectsAgentExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8160,7 +8160,7 @@
 
 func (c *ProjectsAgentImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8307,7 +8307,7 @@
 
 func (c *ProjectsAgentRestoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8483,7 +8483,7 @@
 
 func (c *ProjectsAgentSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8655,7 +8655,7 @@
 
 func (c *ProjectsAgentTrainCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8798,7 +8798,7 @@
 
 func (c *ProjectsAgentEntityTypesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8942,7 +8942,7 @@
 
 func (c *ProjectsAgentEntityTypesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9098,7 +9098,7 @@
 
 func (c *ProjectsAgentEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9243,7 +9243,7 @@
 
 func (c *ProjectsAgentEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9400,7 +9400,7 @@
 
 func (c *ProjectsAgentEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9581,7 +9581,7 @@
 
 func (c *ProjectsAgentEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9778,7 +9778,7 @@
 
 func (c *ProjectsAgentEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9934,7 +9934,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10078,7 +10078,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10225,7 +10225,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10368,7 +10368,7 @@
 
 func (c *ProjectsAgentIntentsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10512,7 +10512,7 @@
 
 func (c *ProjectsAgentIntentsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10680,7 +10680,7 @@
 
 func (c *ProjectsAgentIntentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10834,7 +10834,7 @@
 
 func (c *ProjectsAgentIntentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11002,7 +11002,7 @@
 
 func (c *ProjectsAgentIntentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11202,7 +11202,7 @@
 
 func (c *ProjectsAgentIntentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11420,7 +11420,7 @@
 
 func (c *ProjectsAgentIntentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11579,7 +11579,7 @@
 
 func (c *ProjectsAgentSessionsDeleteContextsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11718,7 +11718,7 @@
 
 func (c *ProjectsAgentSessionsDetectIntentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11863,7 +11863,7 @@
 
 func (c *ProjectsAgentSessionsContextsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12002,7 +12002,7 @@
 
 func (c *ProjectsAgentSessionsContextsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12144,7 +12144,7 @@
 
 func (c *ProjectsAgentSessionsContextsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12304,7 +12304,7 @@
 
 func (c *ProjectsAgentSessionsContextsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12481,7 +12481,7 @@
 
 func (c *ProjectsAgentSessionsContextsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12636,7 +12636,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12781,7 +12781,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12927,7 +12927,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13094,7 +13094,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13275,7 +13275,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13439,7 +13439,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13585,7 +13585,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13767,7 +13767,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13956,7 +13956,7 @@
 
 func (c *ProjectsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14102,7 +14102,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14284,7 +14284,7 @@
 
 func (c *ProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index 227811d..2cbabbe 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -8363,7 +8363,7 @@
 
 func (c *ProjectsAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8509,7 +8509,7 @@
 
 func (c *ProjectsDeleteAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8651,7 +8651,7 @@
 
 func (c *ProjectsGetAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8791,7 +8791,7 @@
 
 func (c *ProjectsAgentExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8958,7 +8958,7 @@
 
 func (c *ProjectsAgentGetValidationResultCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9110,7 +9110,7 @@
 
 func (c *ProjectsAgentImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9258,7 +9258,7 @@
 
 func (c *ProjectsAgentRestoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9434,7 +9434,7 @@
 
 func (c *ProjectsAgentSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9607,7 +9607,7 @@
 
 func (c *ProjectsAgentTrainCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9750,7 +9750,7 @@
 
 func (c *ProjectsAgentEntityTypesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9894,7 +9894,7 @@
 
 func (c *ProjectsAgentEntityTypesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10050,7 +10050,7 @@
 
 func (c *ProjectsAgentEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10195,7 +10195,7 @@
 
 func (c *ProjectsAgentEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10352,7 +10352,7 @@
 
 func (c *ProjectsAgentEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10533,7 +10533,7 @@
 
 func (c *ProjectsAgentEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10730,7 +10730,7 @@
 
 func (c *ProjectsAgentEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10886,7 +10886,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11030,7 +11030,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11177,7 +11177,7 @@
 
 func (c *ProjectsAgentEntityTypesEntitiesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11316,7 +11316,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsDeleteContextsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11455,7 +11455,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsDetectIntentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11600,7 +11600,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsContextsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11740,7 +11740,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsContextsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11882,7 +11882,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsContextsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12043,7 +12043,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsContextsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12220,7 +12220,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsContextsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12376,7 +12376,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12521,7 +12521,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12667,7 +12667,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12834,7 +12834,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13016,7 +13016,7 @@
 
 func (c *ProjectsAgentEnvironmentsUsersSessionsEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13167,7 +13167,7 @@
 
 func (c *ProjectsAgentIntentsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13311,7 +13311,7 @@
 
 func (c *ProjectsAgentIntentsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13479,7 +13479,7 @@
 
 func (c *ProjectsAgentIntentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13634,7 +13634,7 @@
 
 func (c *ProjectsAgentIntentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13802,7 +13802,7 @@
 
 func (c *ProjectsAgentIntentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14003,7 +14003,7 @@
 
 func (c *ProjectsAgentIntentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14221,7 +14221,7 @@
 
 func (c *ProjectsAgentIntentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14387,7 +14387,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14540,7 +14540,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14691,7 +14691,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14858,7 +14858,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15043,7 +15043,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15199,7 +15199,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15345,7 +15345,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15491,7 +15491,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15656,7 +15656,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15843,7 +15843,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16004,7 +16004,7 @@
 
 func (c *ProjectsAgentKnowledgeBasesDocumentsReloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16143,7 +16143,7 @@
 
 func (c *ProjectsAgentSessionsDeleteContextsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16282,7 +16282,7 @@
 
 func (c *ProjectsAgentSessionsDetectIntentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16427,7 +16427,7 @@
 
 func (c *ProjectsAgentSessionsContextsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16567,7 +16567,7 @@
 
 func (c *ProjectsAgentSessionsContextsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16709,7 +16709,7 @@
 
 func (c *ProjectsAgentSessionsContextsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16870,7 +16870,7 @@
 
 func (c *ProjectsAgentSessionsContextsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17047,7 +17047,7 @@
 
 func (c *ProjectsAgentSessionsContextsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17203,7 +17203,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17348,7 +17348,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17494,7 +17494,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17661,7 +17661,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17843,7 +17843,7 @@
 
 func (c *ProjectsAgentSessionsEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17996,7 +17996,7 @@
 
 func (c *ProjectsKnowledgeBasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18149,7 +18149,7 @@
 
 func (c *ProjectsKnowledgeBasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18300,7 +18300,7 @@
 
 func (c *ProjectsKnowledgeBasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18467,7 +18467,7 @@
 
 func (c *ProjectsKnowledgeBasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18652,7 +18652,7 @@
 
 func (c *ProjectsKnowledgeBasesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18808,7 +18808,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18954,7 +18954,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19100,7 +19100,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19265,7 +19265,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19452,7 +19452,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19613,7 +19613,7 @@
 
 func (c *ProjectsKnowledgeBasesDocumentsReloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19761,7 +19761,7 @@
 
 func (c *ProjectsLocationsAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19907,7 +19907,7 @@
 
 func (c *ProjectsLocationsDeleteAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20049,7 +20049,7 @@
 
 func (c *ProjectsLocationsGetAgentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20189,7 +20189,7 @@
 
 func (c *ProjectsLocationsAgentExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20339,7 +20339,7 @@
 
 func (c *ProjectsLocationsAgentImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20487,7 +20487,7 @@
 
 func (c *ProjectsLocationsAgentRestoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20631,7 +20631,7 @@
 
 func (c *ProjectsLocationsAgentTrainCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20774,7 +20774,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20918,7 +20918,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21074,7 +21074,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21219,7 +21219,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21376,7 +21376,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21557,7 +21557,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21754,7 +21754,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21910,7 +21910,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesEntitiesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22054,7 +22054,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesEntitiesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22201,7 +22201,7 @@
 
 func (c *ProjectsLocationsAgentEntityTypesEntitiesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22340,7 +22340,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsDeleteContextsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22479,7 +22479,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsDetectIntentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22624,7 +22624,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsContextsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22764,7 +22764,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsContextsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22906,7 +22906,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsContextsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23067,7 +23067,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsContextsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23244,7 +23244,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsContextsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23400,7 +23400,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23545,7 +23545,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23691,7 +23691,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23858,7 +23858,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24040,7 +24040,7 @@
 
 func (c *ProjectsLocationsAgentEnvironmentsUsersSessionsEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24191,7 +24191,7 @@
 
 func (c *ProjectsLocationsAgentIntentsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24335,7 +24335,7 @@
 
 func (c *ProjectsLocationsAgentIntentsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24503,7 +24503,7 @@
 
 func (c *ProjectsLocationsAgentIntentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24658,7 +24658,7 @@
 
 func (c *ProjectsLocationsAgentIntentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24826,7 +24826,7 @@
 
 func (c *ProjectsLocationsAgentIntentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25027,7 +25027,7 @@
 
 func (c *ProjectsLocationsAgentIntentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25245,7 +25245,7 @@
 
 func (c *ProjectsLocationsAgentIntentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25405,7 +25405,7 @@
 
 func (c *ProjectsLocationsAgentSessionsDeleteContextsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25544,7 +25544,7 @@
 
 func (c *ProjectsLocationsAgentSessionsDetectIntentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25689,7 +25689,7 @@
 
 func (c *ProjectsLocationsAgentSessionsContextsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25829,7 +25829,7 @@
 
 func (c *ProjectsLocationsAgentSessionsContextsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -25971,7 +25971,7 @@
 
 func (c *ProjectsLocationsAgentSessionsContextsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26132,7 +26132,7 @@
 
 func (c *ProjectsLocationsAgentSessionsContextsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26309,7 +26309,7 @@
 
 func (c *ProjectsLocationsAgentSessionsContextsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26465,7 +26465,7 @@
 
 func (c *ProjectsLocationsAgentSessionsEntityTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26610,7 +26610,7 @@
 
 func (c *ProjectsLocationsAgentSessionsEntityTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26756,7 +26756,7 @@
 
 func (c *ProjectsLocationsAgentSessionsEntityTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -26923,7 +26923,7 @@
 
 func (c *ProjectsLocationsAgentSessionsEntityTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27105,7 +27105,7 @@
 
 func (c *ProjectsLocationsAgentSessionsEntityTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27269,7 +27269,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27415,7 +27415,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27597,7 +27597,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27786,7 +27786,7 @@
 
 func (c *ProjectsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -27932,7 +27932,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -28114,7 +28114,7 @@
 
 func (c *ProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/digitalassetlinks/v1/digitalassetlinks-gen.go b/digitalassetlinks/v1/digitalassetlinks-gen.go
index 32cdad8..158f947 100644
--- a/digitalassetlinks/v1/digitalassetlinks-gen.go
+++ b/digitalassetlinks/v1/digitalassetlinks-gen.go
@@ -885,7 +885,7 @@
 
 func (c *AssetlinksCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1192,7 +1192,7 @@
 
 func (c *StatementsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/discovery/v1/discovery-gen.go b/discovery/v1/discovery-gen.go
index 0745b7d..7aadd42 100644
--- a/discovery/v1/discovery-gen.go
+++ b/discovery/v1/discovery-gen.go
@@ -1051,7 +1051,7 @@
 
 func (c *ApisGetRestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1210,7 +1210,7 @@
 
 func (c *ApisListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index 1ae2925..fb3d941 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -8031,7 +8031,7 @@
 
 func (c *InfoTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8200,7 +8200,7 @@
 
 func (c *LocationsInfoTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8350,7 +8350,7 @@
 
 func (c *OrganizationsDeidentifyTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8492,7 +8492,7 @@
 
 func (c *OrganizationsDeidentifyTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8636,7 +8636,7 @@
 
 func (c *OrganizationsDeidentifyTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8821,7 +8821,7 @@
 
 func (c *OrganizationsDeidentifyTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8998,7 +8998,7 @@
 
 func (c *OrganizationsDeidentifyTemplatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9143,7 +9143,7 @@
 
 func (c *OrganizationsInspectTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9284,7 +9284,7 @@
 
 func (c *OrganizationsInspectTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9427,7 +9427,7 @@
 
 func (c *OrganizationsInspectTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9611,7 +9611,7 @@
 
 func (c *OrganizationsInspectTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9787,7 +9787,7 @@
 
 func (c *OrganizationsInspectTemplatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9932,7 +9932,7 @@
 
 func (c *OrganizationsStoredInfoTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10073,7 +10073,7 @@
 
 func (c *OrganizationsStoredInfoTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10217,7 +10217,7 @@
 
 func (c *OrganizationsStoredInfoTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10403,7 +10403,7 @@
 
 func (c *OrganizationsStoredInfoTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10582,7 +10582,7 @@
 
 func (c *OrganizationsStoredInfoTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10733,7 +10733,7 @@
 
 func (c *ProjectsContentDeidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10887,7 +10887,7 @@
 
 func (c *ProjectsContentInspectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11034,7 +11034,7 @@
 
 func (c *ProjectsContentReidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11181,7 +11181,7 @@
 
 func (c *ProjectsDeidentifyTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11323,7 +11323,7 @@
 
 func (c *ProjectsDeidentifyTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11467,7 +11467,7 @@
 
 func (c *ProjectsDeidentifyTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11652,7 +11652,7 @@
 
 func (c *ProjectsDeidentifyTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11829,7 +11829,7 @@
 
 func (c *ProjectsDeidentifyTemplatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11978,7 +11978,7 @@
 
 func (c *ProjectsDlpJobsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12129,7 +12129,7 @@
 
 func (c *ProjectsDlpJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12275,7 +12275,7 @@
 
 func (c *ProjectsDlpJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12420,7 +12420,7 @@
 
 func (c *ProjectsDlpJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12653,7 +12653,7 @@
 
 func (c *ProjectsDlpJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12852,7 +12852,7 @@
 
 func (c *ProjectsImageRedactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12997,7 +12997,7 @@
 
 func (c *ProjectsInspectTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13138,7 +13138,7 @@
 
 func (c *ProjectsInspectTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13281,7 +13281,7 @@
 
 func (c *ProjectsInspectTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13465,7 +13465,7 @@
 
 func (c *ProjectsInspectTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13641,7 +13641,7 @@
 
 func (c *ProjectsInspectTemplatesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13784,7 +13784,7 @@
 
 func (c *ProjectsJobTriggersActivateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13928,7 +13928,7 @@
 
 func (c *ProjectsJobTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14068,7 +14068,7 @@
 
 func (c *ProjectsJobTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14211,7 +14211,7 @@
 
 func (c *ProjectsJobTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14431,7 +14431,7 @@
 
 func (c *ProjectsJobTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14612,7 +14612,7 @@
 
 func (c *ProjectsJobTriggersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14765,7 +14765,7 @@
 
 func (c *ProjectsLocationsContentDeidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14929,7 +14929,7 @@
 
 func (c *ProjectsLocationsContentInspectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15086,7 +15086,7 @@
 
 func (c *ProjectsLocationsContentReidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15249,7 +15249,7 @@
 
 func (c *ProjectsLocationsImageRedactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15402,7 +15402,7 @@
 
 func (c *ProjectsStoredInfoTypesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15543,7 +15543,7 @@
 
 func (c *ProjectsStoredInfoTypesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15687,7 +15687,7 @@
 
 func (c *ProjectsStoredInfoTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15873,7 +15873,7 @@
 
 func (c *ProjectsStoredInfoTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16052,7 +16052,7 @@
 
 func (c *ProjectsStoredInfoTypesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dns/v1/dns-gen.go b/dns/v1/dns-gen.go
index 77533c1..8ec8c96 100644
--- a/dns/v1/dns-gen.go
+++ b/dns/v1/dns-gen.go
@@ -1677,7 +1677,7 @@
 
 func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1851,7 +1851,7 @@
 
 func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2052,7 +2052,7 @@
 
 func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2276,7 +2276,7 @@
 
 func (c *DnsKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2474,7 +2474,7 @@
 
 func (c *DnsKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2677,7 +2677,7 @@
 
 func (c *ManagedZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2872,7 +2872,7 @@
 
 func (c *ManagedZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3072,7 +3072,7 @@
 
 func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3225,7 +3225,7 @@
 
 func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3361,7 +3361,7 @@
 
 func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3543,7 +3543,7 @@
 
 func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3727,7 +3727,7 @@
 
 func (c *ManagedZonesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3890,7 +3890,7 @@
 
 func (c *ManagedZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4051,7 +4051,7 @@
 
 func (c *PoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4205,7 +4205,7 @@
 
 func (c *PoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4341,7 +4341,7 @@
 
 func (c *PoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4515,7 +4515,7 @@
 
 func (c *PoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4694,7 +4694,7 @@
 
 func (c *PoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4857,7 +4857,7 @@
 
 func (c *PoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5027,7 +5027,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5211,7 +5211,7 @@
 
 func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dns/v1beta2/dns-gen.go b/dns/v1beta2/dns-gen.go
index 376e237..01a9c03 100644
--- a/dns/v1beta2/dns-gen.go
+++ b/dns/v1beta2/dns-gen.go
@@ -1754,7 +1754,7 @@
 
 func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1928,7 +1928,7 @@
 
 func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2129,7 +2129,7 @@
 
 func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2353,7 +2353,7 @@
 
 func (c *DnsKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2551,7 +2551,7 @@
 
 func (c *DnsKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2754,7 +2754,7 @@
 
 func (c *ManagedZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2949,7 +2949,7 @@
 
 func (c *ManagedZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3149,7 +3149,7 @@
 
 func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3302,7 +3302,7 @@
 
 func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3438,7 +3438,7 @@
 
 func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3620,7 +3620,7 @@
 
 func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3804,7 +3804,7 @@
 
 func (c *ManagedZonesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3967,7 +3967,7 @@
 
 func (c *ManagedZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4128,7 +4128,7 @@
 
 func (c *PoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4282,7 +4282,7 @@
 
 func (c *PoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4418,7 +4418,7 @@
 
 func (c *PoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4592,7 +4592,7 @@
 
 func (c *PoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4771,7 +4771,7 @@
 
 func (c *PoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4934,7 +4934,7 @@
 
 func (c *PoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5104,7 +5104,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5288,7 +5288,7 @@
 
 func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/dns/v2beta1/dns-gen.go b/dns/v2beta1/dns-gen.go
index ec84de8..5862815 100644
--- a/dns/v2beta1/dns-gen.go
+++ b/dns/v2beta1/dns-gen.go
@@ -1677,7 +1677,7 @@
 
 func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1851,7 +1851,7 @@
 
 func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2052,7 +2052,7 @@
 
 func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2276,7 +2276,7 @@
 
 func (c *DnsKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2474,7 +2474,7 @@
 
 func (c *DnsKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2677,7 +2677,7 @@
 
 func (c *ManagedZoneOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2872,7 +2872,7 @@
 
 func (c *ManagedZoneOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3072,7 +3072,7 @@
 
 func (c *ManagedZonesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3225,7 +3225,7 @@
 
 func (c *ManagedZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3361,7 +3361,7 @@
 
 func (c *ManagedZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3543,7 +3543,7 @@
 
 func (c *ManagedZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3727,7 +3727,7 @@
 
 func (c *ManagedZonesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3890,7 +3890,7 @@
 
 func (c *ManagedZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4051,7 +4051,7 @@
 
 func (c *PoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4205,7 +4205,7 @@
 
 func (c *PoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4341,7 +4341,7 @@
 
 func (c *PoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4515,7 +4515,7 @@
 
 func (c *PoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4694,7 +4694,7 @@
 
 func (c *PoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4857,7 +4857,7 @@
 
 func (c *PoliciesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5027,7 +5027,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5211,7 +5211,7 @@
 
 func (c *ResourceRecordSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/docs/v1/docs-gen.go b/docs/v1/docs-gen.go
index 4156d00..4dded79 100644
--- a/docs/v1/docs-gen.go
+++ b/docs/v1/docs-gen.go
@@ -7356,7 +7356,7 @@
 
 func (c *DocumentsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7499,7 +7499,7 @@
 
 func (c *DocumentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7655,7 +7655,7 @@
 
 func (c *DocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/domainsrdap/v1/domainsrdap-gen.go b/domainsrdap/v1/domainsrdap-gen.go
index e5df04c..6361307 100644
--- a/domainsrdap/v1/domainsrdap-gen.go
+++ b/domainsrdap/v1/domainsrdap-gen.go
@@ -480,7 +480,7 @@
 
 func (c *AutnumGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -619,7 +619,7 @@
 
 func (c *DomainGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -762,7 +762,7 @@
 
 func (c *EntityGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -905,7 +905,7 @@
 
 func (c *IpGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1053,7 +1053,7 @@
 
 func (c *NameserverGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1192,7 +1192,7 @@
 
 func (c *V1GetDomainsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1320,7 +1320,7 @@
 
 func (c *V1GetEntitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1447,7 +1447,7 @@
 
 func (c *V1GetHelpCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1575,7 +1575,7 @@
 
 func (c *V1GetIpCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1703,7 +1703,7 @@
 
 func (c *V1GetNameserversCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
index bafcd7e..45f6aec 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
@@ -1764,7 +1764,7 @@
 
 func (c *LineitemsDownloadlineitemsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1887,7 +1887,7 @@
 
 func (c *LineitemsUploadlineitemsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2009,7 +2009,7 @@
 
 func (c *QueriesCreatequeryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2132,7 +2132,7 @@
 
 func (c *QueriesDeletequeryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2244,7 +2244,7 @@
 
 func (c *QueriesGetqueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2385,7 +2385,7 @@
 
 func (c *QueriesListqueriesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2504,7 +2504,7 @@
 
 func (c *QueriesRunqueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2624,7 +2624,7 @@
 
 func (c *ReportsListreportsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2756,7 +2756,7 @@
 
 func (c *SdfDownloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/doubleclicksearch/v2/doubleclicksearch-gen.go b/doubleclicksearch/v2/doubleclicksearch-gen.go
index bd0eaf5..b0d9e99 100644
--- a/doubleclicksearch/v2/doubleclicksearch-gen.go
+++ b/doubleclicksearch/v2/doubleclicksearch-gen.go
@@ -1154,7 +1154,7 @@
 
 func (c *ConversionGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1366,7 +1366,7 @@
 
 func (c *ConversionInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1496,7 +1496,7 @@
 
 func (c *ConversionPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1684,7 +1684,7 @@
 
 func (c *ConversionUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1807,7 +1807,7 @@
 
 func (c *ConversionUpdateAvailabilityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1930,7 +1930,7 @@
 
 func (c *ReportsGenerateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2064,7 +2064,7 @@
 
 func (c *ReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2208,7 +2208,7 @@
 
 func (c *ReportsGetFileCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2339,7 +2339,7 @@
 
 func (c *ReportsRequestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2475,7 +2475,7 @@
 
 func (c *SavedColumnsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/drive/v2/drive-gen.go b/drive/v2/drive-gen.go
index 6df90a3..17c00f7 100644
--- a/drive/v2/drive-gen.go
+++ b/drive/v2/drive-gen.go
@@ -3916,7 +3916,7 @@
 
 func (c *AboutGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4071,7 +4071,7 @@
 
 func (c *AppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4247,7 +4247,7 @@
 
 func (c *AppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4426,7 +4426,7 @@
 
 func (c *ChangesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4628,7 +4628,7 @@
 
 func (c *ChangesGetStartPageTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4895,7 +4895,7 @@
 
 func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5229,7 +5229,7 @@
 
 func (c *ChangesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5438,7 +5438,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5542,7 +5542,7 @@
 
 func (c *ChildrenDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5664,7 +5664,7 @@
 
 func (c *ChildrenGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5828,7 +5828,7 @@
 
 func (c *ChildrenInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6024,7 +6024,7 @@
 
 func (c *ChildrenListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6207,7 +6207,7 @@
 
 func (c *CommentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6337,7 +6337,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6486,7 +6486,7 @@
 
 func (c *CommentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6666,7 +6666,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6849,7 +6849,7 @@
 
 func (c *CommentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6998,7 +6998,7 @@
 
 func (c *CommentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7144,7 +7144,7 @@
 
 func (c *DrivesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7264,7 +7264,7 @@
 
 func (c *DrivesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7402,7 +7402,7 @@
 
 func (c *DrivesHideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7531,7 +7531,7 @@
 
 func (c *DrivesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7703,7 +7703,7 @@
 
 func (c *DrivesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7869,7 +7869,7 @@
 
 func (c *DrivesUnhideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8008,7 +8008,7 @@
 
 func (c *DrivesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8225,7 +8225,7 @@
 
 func (c *FilesCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8443,7 +8443,7 @@
 
 func (c *FilesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8555,7 +8555,7 @@
 
 func (c *FilesEmptyTrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8655,7 +8655,7 @@
 
 func (c *FilesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8809,7 +8809,7 @@
 
 func (c *FilesGenerateIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9008,7 +9008,7 @@
 
 func (c *FilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9326,7 +9326,7 @@
 
 func (c *FilesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9697,7 +9697,7 @@
 
 func (c *FilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10072,7 +10072,7 @@
 
 func (c *FilesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10330,7 +10330,7 @@
 
 func (c *FilesTouchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10493,7 +10493,7 @@
 
 func (c *FilesTrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10653,7 +10653,7 @@
 
 func (c *FilesUntrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10970,7 +10970,7 @@
 
 func (c *FilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11310,7 +11310,7 @@
 
 func (c *FilesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11516,7 +11516,7 @@
 
 func (c *ParentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11638,7 +11638,7 @@
 
 func (c *ParentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11802,7 +11802,7 @@
 
 func (c *ParentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11963,7 +11963,7 @@
 
 func (c *ParentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12129,7 +12129,7 @@
 
 func (c *PermissionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12296,7 +12296,7 @@
 
 func (c *PermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12469,7 +12469,7 @@
 
 func (c *PermissionsGetIdForEmailCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12652,7 +12652,7 @@
 
 func (c *PermissionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12874,7 +12874,7 @@
 
 func (c *PermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13108,7 +13108,7 @@
 
 func (c *PermissionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13329,7 +13329,7 @@
 
 func (c *PermissionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13513,7 +13513,7 @@
 
 func (c *PropertiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13650,7 +13650,7 @@
 
 func (c *PropertiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13804,7 +13804,7 @@
 
 func (c *PropertiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13954,7 +13954,7 @@
 
 func (c *PropertiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14103,7 +14103,7 @@
 
 func (c *PropertiesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14268,7 +14268,7 @@
 
 func (c *PropertiesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14442,7 +14442,7 @@
 
 func (c *RealtimeGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14623,7 +14623,7 @@
 
 func (c *RealtimeUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14778,7 +14778,7 @@
 
 func (c *RepliesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14917,7 +14917,7 @@
 
 func (c *RepliesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15076,7 +15076,7 @@
 
 func (c *RepliesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15258,7 +15258,7 @@
 
 func (c *RepliesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15446,7 +15446,7 @@
 
 func (c *RepliesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15605,7 +15605,7 @@
 
 func (c *RepliesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15763,7 +15763,7 @@
 
 func (c *RevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15886,7 +15886,7 @@
 
 func (c *RevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16057,7 +16057,7 @@
 
 func (c *RevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16233,7 +16233,7 @@
 
 func (c *RevisionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16383,7 +16383,7 @@
 
 func (c *RevisionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16529,7 +16529,7 @@
 
 func (c *TeamdrivesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16649,7 +16649,7 @@
 
 func (c *TeamdrivesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16788,7 +16788,7 @@
 
 func (c *TeamdrivesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16960,7 +16960,7 @@
 
 func (c *TeamdrivesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17137,7 +17137,7 @@
 
 func (c *TeamdrivesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/drive/v3/drive-gen.go b/drive/v3/drive-gen.go
index 1ce71f6..e87cd84 100644
--- a/drive/v3/drive-gen.go
+++ b/drive/v3/drive-gen.go
@@ -2870,7 +2870,7 @@
 
 func (c *AboutGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3035,7 +3035,7 @@
 
 func (c *ChangesGetStartPageTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3286,7 +3286,7 @@
 
 func (c *ChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3583,7 +3583,7 @@
 
 func (c *ChangesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3791,7 +3791,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3894,7 +3894,7 @@
 
 func (c *CommentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4033,7 +4033,7 @@
 
 func (c *CommentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4163,7 +4163,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4352,7 +4352,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4535,7 +4535,7 @@
 
 func (c *CommentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4681,7 +4681,7 @@
 
 func (c *DrivesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4815,7 +4815,7 @@
 
 func (c *DrivesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4935,7 +4935,7 @@
 
 func (c *DrivesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5073,7 +5073,7 @@
 
 func (c *DrivesHideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5240,7 +5240,7 @@
 
 func (c *DrivesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5406,7 +5406,7 @@
 
 func (c *DrivesUnhideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5545,7 +5545,7 @@
 
 func (c *DrivesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5735,7 +5735,7 @@
 
 func (c *FilesCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5996,7 +5996,7 @@
 
 func (c *FilesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6223,7 +6223,7 @@
 
 func (c *FilesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6335,7 +6335,7 @@
 
 func (c *FilesEmptyTrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6435,7 +6435,7 @@
 
 func (c *FilesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6589,7 +6589,7 @@
 
 func (c *FilesGenerateIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6762,7 +6762,7 @@
 
 func (c *FilesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7059,7 +7059,7 @@
 
 func (c *FilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7386,7 +7386,7 @@
 
 func (c *FilesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7638,7 +7638,7 @@
 
 func (c *FilesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7873,7 +7873,7 @@
 
 func (c *PermissionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8073,7 +8073,7 @@
 
 func (c *PermissionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8240,7 +8240,7 @@
 
 func (c *PermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8457,7 +8457,7 @@
 
 func (c *PermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8692,7 +8692,7 @@
 
 func (c *PermissionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8871,7 +8871,7 @@
 
 func (c *RepliesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9020,7 +9020,7 @@
 
 func (c *RepliesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9160,7 +9160,7 @@
 
 func (c *RepliesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9351,7 +9351,7 @@
 
 func (c *RepliesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9539,7 +9539,7 @@
 
 func (c *RepliesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9697,7 +9697,7 @@
 
 func (c *RevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9829,7 +9829,7 @@
 
 func (c *RevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10024,7 +10024,7 @@
 
 func (c *RevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10200,7 +10200,7 @@
 
 func (c *RevisionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10347,7 +10347,7 @@
 
 func (c *TeamdrivesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10480,7 +10480,7 @@
 
 func (c *TeamdrivesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10600,7 +10600,7 @@
 
 func (c *TeamdrivesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10777,7 +10777,7 @@
 
 func (c *TeamdrivesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10954,7 +10954,7 @@
 
 func (c *TeamdrivesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/driveactivity/v2/driveactivity-gen.go b/driveactivity/v2/driveactivity-gen.go
index a85fd3a..d245973 100644
--- a/driveactivity/v2/driveactivity-gen.go
+++ b/driveactivity/v2/driveactivity-gen.go
@@ -1923,7 +1923,7 @@
 
 func (c *ActivityQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/factchecktools/v1alpha1/factchecktools-gen.go b/factchecktools/v1alpha1/factchecktools-gen.go
index 01e39df..124afbf 100644
--- a/factchecktools/v1alpha1/factchecktools-gen.go
+++ b/factchecktools/v1alpha1/factchecktools-gen.go
@@ -771,7 +771,7 @@
 
 func (c *ClaimsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -951,7 +951,7 @@
 
 func (c *PagesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1079,7 +1079,7 @@
 
 func (c *PagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1220,7 +1220,7 @@
 
 func (c *PagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1420,7 +1420,7 @@
 
 func (c *PagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1602,7 +1602,7 @@
 
 func (c *PagesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/fcm/v1/fcm-gen.go b/fcm/v1/fcm-gen.go
index ae93815..8986060 100644
--- a/fcm/v1/fcm-gen.go
+++ b/fcm/v1/fcm-gen.go
@@ -1240,7 +1240,7 @@
 
 func (c *ProjectsMessagesSendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/file/v1/file-gen.go b/file/v1/file-gen.go
index d6c22df..bd0f2be 100644
--- a/file/v1/file-gen.go
+++ b/file/v1/file-gen.go
@@ -1356,7 +1356,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1522,7 +1522,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1702,7 +1702,7 @@
 
 func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1845,7 +1845,7 @@
 
 func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1986,7 +1986,7 @@
 
 func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2160,7 +2160,7 @@
 
 func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2350,7 +2350,7 @@
 
 func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2513,7 +2513,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2657,7 +2657,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2802,7 +2802,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2983,7 +2983,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/file/v1beta1/file-gen.go b/file/v1beta1/file-gen.go
index 703a26a..b0694a4 100644
--- a/file/v1beta1/file-gen.go
+++ b/file/v1beta1/file-gen.go
@@ -1356,7 +1356,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1522,7 +1522,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1702,7 +1702,7 @@
 
 func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1845,7 +1845,7 @@
 
 func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1986,7 +1986,7 @@
 
 func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2160,7 +2160,7 @@
 
 func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2350,7 +2350,7 @@
 
 func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2513,7 +2513,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2657,7 +2657,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2802,7 +2802,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2983,7 +2983,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firebase/v1beta1/firebase-gen.go b/firebase/v1beta1/firebase-gen.go
index 4579615..f2d8d52 100644
--- a/firebase/v1beta1/firebase-gen.go
+++ b/firebase/v1beta1/firebase-gen.go
@@ -2057,7 +2057,7 @@
 
 func (c *AvailableProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2228,7 +2228,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2410,7 +2410,7 @@
 
 func (c *ProjectsAddFirebaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2633,7 +2633,7 @@
 
 func (c *ProjectsAddGoogleAnalyticsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2784,7 +2784,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2938,7 +2938,7 @@
 
 func (c *ProjectsGetAdminSdkConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3091,7 +3091,7 @@
 
 func (c *ProjectsGetAnalyticsDetailsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3277,7 +3277,7 @@
 
 func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3451,7 +3451,7 @@
 
 func (c *ProjectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3624,7 +3624,7 @@
 
 func (c *ProjectsRemoveAnalyticsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3803,7 +3803,7 @@
 
 func (c *ProjectsSearchAppsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3979,7 +3979,7 @@
 
 func (c *ProjectsAndroidAppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4129,7 +4129,7 @@
 
 func (c *ProjectsAndroidAppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4278,7 +4278,7 @@
 
 func (c *ProjectsAndroidAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4449,7 +4449,7 @@
 
 func (c *ProjectsAndroidAppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4631,7 +4631,7 @@
 
 func (c *ProjectsAndroidAppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4778,7 +4778,7 @@
 
 func (c *ProjectsAndroidAppsShaCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4917,7 +4917,7 @@
 
 func (c *ProjectsAndroidAppsShaDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5061,7 +5061,7 @@
 
 func (c *ProjectsAndroidAppsShaListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5261,7 +5261,7 @@
 
 func (c *ProjectsAvailableLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5493,7 +5493,7 @@
 
 func (c *ProjectsDefaultLocationFinalizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5639,7 +5639,7 @@
 
 func (c *ProjectsIosAppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5789,7 +5789,7 @@
 
 func (c *ProjectsIosAppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5937,7 +5937,7 @@
 
 func (c *ProjectsIosAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6108,7 +6108,7 @@
 
 func (c *ProjectsIosAppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6290,7 +6290,7 @@
 
 func (c *ProjectsIosAppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6443,7 +6443,7 @@
 
 func (c *ProjectsWebAppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6593,7 +6593,7 @@
 
 func (c *ProjectsWebAppsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6741,7 +6741,7 @@
 
 func (c *ProjectsWebAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6912,7 +6912,7 @@
 
 func (c *ProjectsWebAppsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7094,7 +7094,7 @@
 
 func (c *ProjectsWebAppsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go b/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
index 6eeacc8..2677494 100644
--- a/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
+++ b/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
@@ -1519,7 +1519,7 @@
 
 func (c *ManagedShortLinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1656,7 +1656,7 @@
 
 func (c *ShortLinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1809,7 +1809,7 @@
 
 func (c *V1GetLinkStatsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1953,7 +1953,7 @@
 
 func (c *V1InstallAttributionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2080,7 +2080,7 @@
 
 func (c *V1ReopenAttributionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firebasehosting/v1beta1/firebasehosting-gen.go b/firebasehosting/v1beta1/firebasehosting-gen.go
index 2700d80..4b32042 100644
--- a/firebasehosting/v1beta1/firebasehosting-gen.go
+++ b/firebasehosting/v1beta1/firebasehosting-gen.go
@@ -1367,7 +1367,7 @@
 
 func (c *SitesGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1518,7 +1518,7 @@
 
 func (c *SitesUpdateConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1665,7 +1665,7 @@
 
 func (c *SitesDomainsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1804,7 +1804,7 @@
 
 func (c *SitesDomainsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1946,7 +1946,7 @@
 
 func (c *SitesDomainsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2107,7 +2107,7 @@
 
 func (c *SitesDomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2279,7 +2279,7 @@
 
 func (c *SitesDomainsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2439,7 +2439,7 @@
 
 func (c *SitesReleasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2609,7 +2609,7 @@
 
 func (c *SitesReleasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2795,7 +2795,7 @@
 
 func (c *SitesVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2945,7 +2945,7 @@
 
 func (c *SitesVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3100,7 +3100,7 @@
 
 func (c *SitesVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3247,7 +3247,7 @@
 
 func (c *SitesVersionsPopulateFilesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3427,7 +3427,7 @@
 
 func (c *SitesVersionsFilesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firebaserules/v1/firebaserules-gen.go b/firebaserules/v1/firebaserules-gen.go
index 731c6d8..5ae76bc 100644
--- a/firebaserules/v1/firebaserules-gen.go
+++ b/firebaserules/v1/firebaserules-gen.go
@@ -1191,7 +1191,7 @@
 
 func (c *ProjectsTestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1367,7 +1367,7 @@
 
 func (c *ProjectsReleasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1506,7 +1506,7 @@
 
 func (c *ProjectsReleasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1648,7 +1648,7 @@
 
 func (c *ProjectsReleasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1808,7 +1808,7 @@
 
 func (c *ProjectsReleasesGetExecutableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2032,7 +2032,7 @@
 
 func (c *ProjectsReleasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2212,7 +2212,7 @@
 
 func (c *ProjectsReleasesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2361,7 +2361,7 @@
 
 func (c *ProjectsRulesetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2503,7 +2503,7 @@
 
 func (c *ProjectsRulesetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2645,7 +2645,7 @@
 
 func (c *ProjectsRulesetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2832,7 +2832,7 @@
 
 func (c *ProjectsRulesetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firestore/v1/firestore-gen.go b/firestore/v1/firestore-gen.go
index 5f270bc..3b0ce26 100644
--- a/firestore/v1/firestore-gen.go
+++ b/firestore/v1/firestore-gen.go
@@ -3657,7 +3657,7 @@
 
 func (c *ProjectsDatabasesExportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3807,7 +3807,7 @@
 
 func (c *ProjectsDatabasesImportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3957,7 +3957,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4140,7 +4140,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4342,7 +4342,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4493,7 +4493,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4632,7 +4632,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4774,7 +4774,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4942,7 +4942,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5121,7 +5121,7 @@
 
 func (c *ProjectsDatabasesDocumentsBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5262,7 +5262,7 @@
 
 func (c *ProjectsDatabasesDocumentsBeginTransactionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5403,7 +5403,7 @@
 
 func (c *ProjectsDatabasesDocumentsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5563,7 +5563,7 @@
 
 func (c *ProjectsDatabasesDocumentsCreateDocumentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5739,7 +5739,7 @@
 
 func (c *ProjectsDatabasesDocumentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5915,7 +5915,7 @@
 
 func (c *ProjectsDatabasesDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6140,7 +6140,7 @@
 
 func (c *ProjectsDatabasesDocumentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6345,7 +6345,7 @@
 
 func (c *ProjectsDatabasesDocumentsListCollectionIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6507,7 +6507,7 @@
 
 func (c *ProjectsDatabasesDocumentsListenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6683,7 +6683,7 @@
 
 func (c *ProjectsDatabasesDocumentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6847,7 +6847,7 @@
 
 func (c *ProjectsDatabasesDocumentsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6988,7 +6988,7 @@
 
 func (c *ProjectsDatabasesDocumentsRunQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7129,7 +7129,7 @@
 
 func (c *ProjectsDatabasesDocumentsWriteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7287,7 +7287,7 @@
 
 func (c *ProjectsDatabasesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7432,7 +7432,7 @@
 
 func (c *ProjectsDatabasesOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7578,7 +7578,7 @@
 
 func (c *ProjectsDatabasesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7760,7 +7760,7 @@
 
 func (c *ProjectsDatabasesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7943,7 +7943,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8110,7 +8110,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firestore/v1beta1/firestore-gen.go b/firestore/v1beta1/firestore-gen.go
index 8354cb8..4793e47 100644
--- a/firestore/v1beta1/firestore-gen.go
+++ b/firestore/v1beta1/firestore-gen.go
@@ -3126,7 +3126,7 @@
 
 func (c *ProjectsDatabasesExportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3276,7 +3276,7 @@
 
 func (c *ProjectsDatabasesImportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3421,7 +3421,7 @@
 
 func (c *ProjectsDatabasesDocumentsBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3562,7 +3562,7 @@
 
 func (c *ProjectsDatabasesDocumentsBeginTransactionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3703,7 +3703,7 @@
 
 func (c *ProjectsDatabasesDocumentsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3863,7 +3863,7 @@
 
 func (c *ProjectsDatabasesDocumentsCreateDocumentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4039,7 +4039,7 @@
 
 func (c *ProjectsDatabasesDocumentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4215,7 +4215,7 @@
 
 func (c *ProjectsDatabasesDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4440,7 +4440,7 @@
 
 func (c *ProjectsDatabasesDocumentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4645,7 +4645,7 @@
 
 func (c *ProjectsDatabasesDocumentsListCollectionIdsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4807,7 +4807,7 @@
 
 func (c *ProjectsDatabasesDocumentsListenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4983,7 +4983,7 @@
 
 func (c *ProjectsDatabasesDocumentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5147,7 +5147,7 @@
 
 func (c *ProjectsDatabasesDocumentsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5288,7 +5288,7 @@
 
 func (c *ProjectsDatabasesDocumentsRunQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5429,7 +5429,7 @@
 
 func (c *ProjectsDatabasesDocumentsWriteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5587,7 +5587,7 @@
 
 func (c *ProjectsDatabasesIndexesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5726,7 +5726,7 @@
 
 func (c *ProjectsDatabasesIndexesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5868,7 +5868,7 @@
 
 func (c *ProjectsDatabasesIndexesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6033,7 +6033,7 @@
 
 func (c *ProjectsDatabasesIndexesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/firestore/v1beta2/firestore-gen.go b/firestore/v1beta2/firestore-gen.go
index 945f298..682ce1c 100644
--- a/firestore/v1beta2/firestore-gen.go
+++ b/firestore/v1beta2/firestore-gen.go
@@ -1244,7 +1244,7 @@
 
 func (c *ProjectsDatabasesExportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1394,7 +1394,7 @@
 
 func (c *ProjectsDatabasesImportDocumentsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1544,7 +1544,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1727,7 +1727,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1929,7 +1929,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsFieldsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2080,7 +2080,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2219,7 +2219,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2361,7 +2361,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2529,7 +2529,7 @@
 
 func (c *ProjectsDatabasesCollectionGroupsIndexesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/fitness/v1/fitness-gen.go b/fitness/v1/fitness-gen.go
index f715c35..94f5726 100644
--- a/fitness/v1/fitness-gen.go
+++ b/fitness/v1/fitness-gen.go
@@ -1452,7 +1452,7 @@
 
 func (c *UsersDataSourcesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1599,7 +1599,7 @@
 
 func (c *UsersDataSourcesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1756,7 +1756,7 @@
 
 func (c *UsersDataSourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1934,7 +1934,7 @@
 
 func (c *UsersDataSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2096,7 +2096,7 @@
 
 func (c *UsersDataSourcesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2278,7 +2278,7 @@
 
 func (c *UsersDataSourcesDataPointChangesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2490,7 +2490,7 @@
 
 func (c *UsersDataSourcesDatasetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2665,7 +2665,7 @@
 
 func (c *UsersDataSourcesDatasetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2880,7 +2880,7 @@
 
 func (c *UsersDataSourcesDatasetsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3072,7 +3072,7 @@
 
 func (c *UsersDatasetAggregateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3234,7 +3234,7 @@
 
 func (c *UsersSessionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3397,7 +3397,7 @@
 
 func (c *UsersSessionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3597,7 +3597,7 @@
 
 func (c *UsersSessionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/fusiontables/v1/fusiontables-gen.go b/fusiontables/v1/fusiontables-gen.go
index e7841ae..f330cc8 100644
--- a/fusiontables/v1/fusiontables-gen.go
+++ b/fusiontables/v1/fusiontables-gen.go
@@ -1337,7 +1337,7 @@
 
 func (c *ColumnDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1458,7 +1458,7 @@
 
 func (c *ColumnGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1600,7 +1600,7 @@
 
 func (c *ColumnInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1761,7 +1761,7 @@
 
 func (c *ColumnListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1931,7 +1931,7 @@
 
 func (c *ColumnPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2079,7 +2079,7 @@
 
 func (c *ColumnUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2238,7 +2238,7 @@
 
 func (c *QuerySqlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2417,7 +2417,7 @@
 
 func (c *QuerySqlGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2576,7 +2576,7 @@
 
 func (c *StyleDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2698,7 +2698,7 @@
 
 func (c *StyleGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2841,7 +2841,7 @@
 
 func (c *StyleInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3002,7 +3002,7 @@
 
 func (c *StyleListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3172,7 +3172,7 @@
 
 func (c *StylePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3321,7 +3321,7 @@
 
 func (c *StyleUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3473,7 +3473,7 @@
 
 func (c *TableCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3607,7 +3607,7 @@
 
 func (c *TableDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3718,7 +3718,7 @@
 
 func (c *TableGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3935,7 +3935,7 @@
 
 func (c *TableImportRowsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4190,7 +4190,7 @@
 
 func (c *TableImportTableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4370,7 +4370,7 @@
 
 func (c *TableInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4515,7 +4515,7 @@
 
 func (c *TableListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4681,7 +4681,7 @@
 
 func (c *TablePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4834,7 +4834,7 @@
 
 func (c *TableUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4977,7 +4977,7 @@
 
 func (c *TaskDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5097,7 +5097,7 @@
 
 func (c *TaskGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5266,7 +5266,7 @@
 
 func (c *TaskListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5437,7 +5437,7 @@
 
 func (c *TemplateDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5559,7 +5559,7 @@
 
 func (c *TemplateGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5702,7 +5702,7 @@
 
 func (c *TemplateInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5863,7 +5863,7 @@
 
 func (c *TemplateListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6033,7 +6033,7 @@
 
 func (c *TemplatePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6182,7 +6182,7 @@
 
 func (c *TemplateUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/fusiontables/v2/fusiontables-gen.go b/fusiontables/v2/fusiontables-gen.go
index d71d401..2d52dcb 100644
--- a/fusiontables/v2/fusiontables-gen.go
+++ b/fusiontables/v2/fusiontables-gen.go
@@ -1395,7 +1395,7 @@
 
 func (c *ColumnDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1516,7 +1516,7 @@
 
 func (c *ColumnGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1658,7 +1658,7 @@
 
 func (c *ColumnInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1819,7 +1819,7 @@
 
 func (c *ColumnListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1989,7 +1989,7 @@
 
 func (c *ColumnPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2137,7 +2137,7 @@
 
 func (c *ColumnUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2302,7 +2302,7 @@
 
 func (c *QuerySqlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2484,7 +2484,7 @@
 
 func (c *QuerySqlGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2643,7 +2643,7 @@
 
 func (c *StyleDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2765,7 +2765,7 @@
 
 func (c *StyleGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2908,7 +2908,7 @@
 
 func (c *StyleInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3069,7 +3069,7 @@
 
 func (c *StyleListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3239,7 +3239,7 @@
 
 func (c *StylePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3388,7 +3388,7 @@
 
 func (c *StyleUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3540,7 +3540,7 @@
 
 func (c *TableCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3674,7 +3674,7 @@
 
 func (c *TableDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3785,7 +3785,7 @@
 
 func (c *TableGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3997,7 +3997,7 @@
 
 func (c *TableImportRowsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4252,7 +4252,7 @@
 
 func (c *TableImportTableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4432,7 +4432,7 @@
 
 func (c *TableInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4577,7 +4577,7 @@
 
 func (c *TableListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4743,7 +4743,7 @@
 
 func (c *TablePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4886,7 +4886,7 @@
 
 func (c *TableRefetchSheetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5097,7 +5097,7 @@
 
 func (c *TableReplaceRowsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5309,7 +5309,7 @@
 
 func (c *TableUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5453,7 +5453,7 @@
 
 func (c *TaskDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5574,7 +5574,7 @@
 
 func (c *TaskGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5746,7 +5746,7 @@
 
 func (c *TaskListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5919,7 +5919,7 @@
 
 func (c *TemplateDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6041,7 +6041,7 @@
 
 func (c *TemplateGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6184,7 +6184,7 @@
 
 func (c *TemplateInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6345,7 +6345,7 @@
 
 func (c *TemplateListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6515,7 +6515,7 @@
 
 func (c *TemplatePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6664,7 +6664,7 @@
 
 func (c *TemplateUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/games/v1/games-gen.go b/games/v1/games-gen.go
index 12284bb..02fa69c 100644
--- a/games/v1/games-gen.go
+++ b/games/v1/games-gen.go
@@ -4851,7 +4851,7 @@
 
 func (c *AchievementDefinitionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5021,7 +5021,7 @@
 
 func (c *AchievementsIncrementCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5213,7 +5213,7 @@
 
 func (c *AchievementsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5401,7 +5401,7 @@
 
 func (c *AchievementsRevealCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5533,7 +5533,7 @@
 
 func (c *AchievementsSetStepsAtLeastCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5679,7 +5679,7 @@
 
 func (c *AchievementsUnlockCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5820,7 +5820,7 @@
 
 func (c *AchievementsUpdateMultipleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5984,7 +5984,7 @@
 
 func (c *ApplicationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6141,7 +6141,7 @@
 
 func (c *ApplicationsPlayedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6247,7 +6247,7 @@
 
 func (c *ApplicationsVerifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6411,7 +6411,7 @@
 
 func (c *EventsListByPlayerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6602,7 +6602,7 @@
 
 func (c *EventsListDefinitionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6768,7 +6768,7 @@
 
 func (c *EventsRecordCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6915,7 +6915,7 @@
 
 func (c *LeaderboardsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7083,7 +7083,7 @@
 
 func (c *LeaderboardsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7251,7 +7251,7 @@
 
 func (c *MetagameGetMetagameConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7405,7 +7405,7 @@
 
 func (c *MetagameListCategoriesByPlayerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7608,7 +7608,7 @@
 
 func (c *PlayersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7779,7 +7779,7 @@
 
 func (c *PlayersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7962,7 +7962,7 @@
 
 func (c *PushtokensRemoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8056,7 +8056,7 @@
 
 func (c *PushtokensUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8160,7 +8160,7 @@
 
 func (c *RevisionsCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8296,7 +8296,7 @@
 
 func (c *RoomsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8433,7 +8433,7 @@
 
 func (c *RoomsDeclineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8567,7 +8567,7 @@
 
 func (c *RoomsDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8685,7 +8685,7 @@
 
 func (c *RoomsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8831,7 +8831,7 @@
 
 func (c *RoomsJoinCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8982,7 +8982,7 @@
 
 func (c *RoomsLeaveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9155,7 +9155,7 @@
 
 func (c *RoomsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9324,7 +9324,7 @@
 
 func (c *RoomsReportStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9522,7 +9522,7 @@
 
 func (c *ScoresGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9773,7 +9773,7 @@
 
 func (c *ScoresListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10034,7 +10034,7 @@
 
 func (c *ScoresListWindowCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10267,7 +10267,7 @@
 
 func (c *ScoresSubmitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10421,7 +10421,7 @@
 
 func (c *ScoresSubmitMultipleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10568,7 +10568,7 @@
 
 func (c *SnapshotsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10740,7 +10740,7 @@
 
 func (c *SnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10911,7 +10911,7 @@
 
 func (c *TurnBasedMatchesCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11018,7 +11018,7 @@
 
 func (c *TurnBasedMatchesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11154,7 +11154,7 @@
 
 func (c *TurnBasedMatchesDeclineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11289,7 +11289,7 @@
 
 func (c *TurnBasedMatchesDismissCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11400,7 +11400,7 @@
 
 func (c *TurnBasedMatchesFinishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11566,7 +11566,7 @@
 
 func (c *TurnBasedMatchesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11714,7 +11714,7 @@
 
 func (c *TurnBasedMatchesJoinCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11855,7 +11855,7 @@
 
 func (c *TurnBasedMatchesLeaveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12007,7 +12007,7 @@
 
 func (c *TurnBasedMatchesLeaveTurnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12205,7 +12205,7 @@
 
 func (c *TurnBasedMatchesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12395,7 +12395,7 @@
 
 func (c *TurnBasedMatchesRematchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12589,7 +12589,7 @@
 
 func (c *TurnBasedMatchesSyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12769,7 +12769,7 @@
 
 func (c *TurnBasedMatchesTakeTurnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/gamesconfiguration/v1configuration/gamesconfiguration-gen.go b/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
index d3fcbb1..962bd70 100644
--- a/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
+++ b/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
@@ -713,7 +713,7 @@
 
 func (c *AchievementConfigurationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -825,7 +825,7 @@
 
 func (c *AchievementConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -958,7 +958,7 @@
 
 func (c *AchievementConfigurationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1122,7 +1122,7 @@
 
 func (c *AchievementConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1291,7 +1291,7 @@
 
 func (c *AchievementConfigurationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1430,7 +1430,7 @@
 
 func (c *AchievementConfigurationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1609,7 +1609,7 @@
 
 func (c *ImageConfigurationsUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1798,7 +1798,7 @@
 
 func (c *LeaderboardConfigurationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1910,7 +1910,7 @@
 
 func (c *LeaderboardConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2043,7 +2043,7 @@
 
 func (c *LeaderboardConfigurationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2207,7 +2207,7 @@
 
 func (c *LeaderboardConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2376,7 +2376,7 @@
 
 func (c *LeaderboardConfigurationsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2515,7 +2515,7 @@
 
 func (c *LeaderboardConfigurationsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/gamesmanagement/v1management/gamesmanagement-gen.go b/gamesmanagement/v1management/gamesmanagement-gen.go
index e38f675..b5cb9f8 100644
--- a/gamesmanagement/v1management/gamesmanagement-gen.go
+++ b/gamesmanagement/v1management/gamesmanagement-gen.go
@@ -856,7 +856,7 @@
 
 func (c *AchievementsResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -984,7 +984,7 @@
 
 func (c *AchievementsResetAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1098,7 +1098,7 @@
 
 func (c *AchievementsResetAllForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1186,7 +1186,7 @@
 
 func (c *AchievementsResetForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1288,7 +1288,7 @@
 
 func (c *AchievementsResetMultipleForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1411,7 +1411,7 @@
 
 func (c *ApplicationsListHiddenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1579,7 +1579,7 @@
 
 func (c *EventsResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1680,7 +1680,7 @@
 
 func (c *EventsResetAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1766,7 +1766,7 @@
 
 func (c *EventsResetAllForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1855,7 +1855,7 @@
 
 func (c *EventsResetForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1958,7 +1958,7 @@
 
 func (c *EventsResetMultipleForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2056,7 +2056,7 @@
 
 func (c *PlayersHideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2168,7 +2168,7 @@
 
 func (c *PlayersUnhideCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2276,7 +2276,7 @@
 
 func (c *RoomsResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2362,7 +2362,7 @@
 
 func (c *RoomsResetForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2450,7 +2450,7 @@
 
 func (c *ScoresResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2578,7 +2578,7 @@
 
 func (c *ScoresResetAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2692,7 +2692,7 @@
 
 func (c *ScoresResetAllForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2780,7 +2780,7 @@
 
 func (c *ScoresResetForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2883,7 +2883,7 @@
 
 func (c *ScoresResetMultipleForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2976,7 +2976,7 @@
 
 func (c *TurnBasedMatchesResetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3063,7 +3063,7 @@
 
 func (c *TurnBasedMatchesResetForAllPlayersCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/genomics/v1/genomics-gen.go b/genomics/v1/genomics-gen.go
index a41f161..fa9aede 100644
--- a/genomics/v1/genomics-gen.go
+++ b/genomics/v1/genomics-gen.go
@@ -1110,7 +1110,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1267,7 +1267,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1473,7 +1473,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/genomics/v1alpha2/genomics-gen.go b/genomics/v1alpha2/genomics-gen.go
index 51dacbd..abf5190 100644
--- a/genomics/v1alpha2/genomics-gen.go
+++ b/genomics/v1alpha2/genomics-gen.go
@@ -2210,7 +2210,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2367,7 +2367,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2573,7 +2573,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2751,7 +2751,7 @@
 
 func (c *PipelinesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2879,7 +2879,7 @@
 
 func (c *PipelinesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3022,7 +3022,7 @@
 
 func (c *PipelinesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3179,7 +3179,7 @@
 
 func (c *PipelinesGetControllerConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3356,7 +3356,7 @@
 
 func (c *PipelinesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3533,7 +3533,7 @@
 
 func (c *PipelinesRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3664,7 +3664,7 @@
 
 func (c *PipelinesSetOperationStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/genomics/v2alpha1/genomics-gen.go b/genomics/v2alpha1/genomics-gen.go
index a227d1b..546598d 100644
--- a/genomics/v2alpha1/genomics-gen.go
+++ b/genomics/v2alpha1/genomics-gen.go
@@ -2138,7 +2138,7 @@
 
 func (c *PipelinesRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2278,7 +2278,7 @@
 
 func (c *ProjectsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2435,7 +2435,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2641,7 +2641,7 @@
 
 func (c *ProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2816,7 +2816,7 @@
 
 func (c *WorkersCheckInCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/gmail/v1/gmail-gen.go b/gmail/v1/gmail-gen.go
index 2ec93b3..7aa3565 100644
--- a/gmail/v1/gmail-gen.go
+++ b/gmail/v1/gmail-gen.go
@@ -2265,7 +2265,7 @@
 
 func (c *UsersGetProfileCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2401,7 +2401,7 @@
 
 func (c *UsersStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2508,7 +2508,7 @@
 
 func (c *UsersWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2690,7 +2690,7 @@
 
 func (c *UsersDraftsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2877,7 +2877,7 @@
 
 func (c *UsersDraftsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3014,7 +3014,7 @@
 
 func (c *UsersDraftsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3216,7 +3216,7 @@
 
 func (c *UsersDraftsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3438,7 +3438,7 @@
 
 func (c *UsersDraftsSendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3666,7 +3666,7 @@
 
 func (c *UsersDraftsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3921,7 +3921,7 @@
 
 func (c *UsersHistoryListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4120,7 +4120,7 @@
 
 func (c *UsersLabelsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4262,7 +4262,7 @@
 
 func (c *UsersLabelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4386,7 +4386,7 @@
 
 func (c *UsersLabelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4541,7 +4541,7 @@
 
 func (c *UsersLabelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4682,7 +4682,7 @@
 
 func (c *UsersLabelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4833,7 +4833,7 @@
 
 func (c *UsersLabelsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4984,7 +4984,7 @@
 
 func (c *UsersMessagesBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5095,7 +5095,7 @@
 
 func (c *UsersMessagesBatchModifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5208,7 +5208,7 @@
 
 func (c *UsersMessagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5350,7 +5350,7 @@
 
 func (c *UsersMessagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5596,7 +5596,7 @@
 
 func (c *UsersMessagesImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5875,7 +5875,7 @@
 
 func (c *UsersMessagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6128,7 +6128,7 @@
 
 func (c *UsersMessagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6317,7 +6317,7 @@
 
 func (c *UsersMessagesModifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6506,7 +6506,7 @@
 
 func (c *UsersMessagesSendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6693,7 +6693,7 @@
 
 func (c *UsersMessagesTrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6833,7 +6833,7 @@
 
 func (c *UsersMessagesUntrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6986,7 +6986,7 @@
 
 func (c *UsersMessagesAttachmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7148,7 +7148,7 @@
 
 func (c *UsersSettingsGetAutoForwardingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7294,7 +7294,7 @@
 
 func (c *UsersSettingsGetImapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7440,7 +7440,7 @@
 
 func (c *UsersSettingsGetLanguageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7586,7 +7586,7 @@
 
 func (c *UsersSettingsGetPopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7732,7 +7732,7 @@
 
 func (c *UsersSettingsGetVacationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7874,7 +7874,7 @@
 
 func (c *UsersSettingsUpdateAutoForwardingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8013,7 +8013,7 @@
 
 func (c *UsersSettingsUpdateImapCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8158,7 +8158,7 @@
 
 func (c *UsersSettingsUpdateLanguageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8297,7 +8297,7 @@
 
 func (c *UsersSettingsUpdatePopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8436,7 +8436,7 @@
 
 func (c *UsersSettingsUpdateVacationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8592,7 +8592,7 @@
 
 func (c *UsersSettingsDelegatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8739,7 +8739,7 @@
 
 func (c *UsersSettingsDelegatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8867,7 +8867,7 @@
 
 func (c *UsersSettingsDelegatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9024,7 +9024,7 @@
 
 func (c *UsersSettingsDelegatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9161,7 +9161,7 @@
 
 func (c *UsersSettingsFiltersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9300,7 +9300,7 @@
 
 func (c *UsersSettingsFiltersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9422,7 +9422,7 @@
 
 func (c *UsersSettingsFiltersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9576,7 +9576,7 @@
 
 func (c *UsersSettingsFiltersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9719,7 +9719,7 @@
 
 func (c *UsersSettingsForwardingAddressesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9862,7 +9862,7 @@
 
 func (c *UsersSettingsForwardingAddressesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9984,7 +9984,7 @@
 
 func (c *UsersSettingsForwardingAddressesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10138,7 +10138,7 @@
 
 func (c *UsersSettingsForwardingAddressesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10285,7 +10285,7 @@
 
 func (c *UsersSettingsSendAsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10428,7 +10428,7 @@
 
 func (c *UsersSettingsSendAsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10551,7 +10551,7 @@
 
 func (c *UsersSettingsSendAsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10707,7 +10707,7 @@
 
 func (c *UsersSettingsSendAsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10851,7 +10851,7 @@
 
 func (c *UsersSettingsSendAsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11006,7 +11006,7 @@
 
 func (c *UsersSettingsSendAsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11158,7 +11158,7 @@
 
 func (c *UsersSettingsSendAsVerifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11272,7 +11272,7 @@
 
 func (c *UsersSettingsSendAsSmimeInfoDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11406,7 +11406,7 @@
 
 func (c *UsersSettingsSendAsSmimeInfoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11563,7 +11563,7 @@
 
 func (c *UsersSettingsSendAsSmimeInfoInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11722,7 +11722,7 @@
 
 func (c *UsersSettingsSendAsSmimeInfoListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11871,7 +11871,7 @@
 
 func (c *UsersSettingsSendAsSmimeInfoSetDefaultCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11992,7 +11992,7 @@
 
 func (c *UsersThreadsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12133,7 +12133,7 @@
 
 func (c *UsersThreadsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12347,7 +12347,7 @@
 
 func (c *UsersThreadsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12537,7 +12537,7 @@
 
 func (c *UsersThreadsModifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12685,7 +12685,7 @@
 
 func (c *UsersThreadsTrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12825,7 +12825,7 @@
 
 func (c *UsersThreadsUntrashCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/groupsmigration/v1/groupsmigration-gen.go b/groupsmigration/v1/groupsmigration-gen.go
index df0da61..7e91bd3 100644
--- a/groupsmigration/v1/groupsmigration-gen.go
+++ b/groupsmigration/v1/groupsmigration-gen.go
@@ -258,7 +258,7 @@
 
 func (c *ArchiveInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/groupssettings/v1/groupssettings-gen.go b/groupssettings/v1/groupssettings-gen.go
index 7157b2b..ef314aa 100644
--- a/groupssettings/v1/groupssettings-gen.go
+++ b/groupssettings/v1/groupssettings-gen.go
@@ -778,7 +778,7 @@
 
 func (c *GroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -912,7 +912,7 @@
 
 func (c *GroupsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1050,7 +1050,7 @@
 
 func (c *GroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/healthcare/v1beta1/healthcare-gen.go b/healthcare/v1beta1/healthcare-gen.go
index fb855dc..0bfa27c 100644
--- a/healthcare/v1beta1/healthcare-gen.go
+++ b/healthcare/v1beta1/healthcare-gen.go
@@ -3858,7 +3858,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4024,7 +4024,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4213,7 +4213,7 @@
 
 func (c *ProjectsLocationsDatasetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4371,7 +4371,7 @@
 
 func (c *ProjectsLocationsDatasetsDeidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4513,7 +4513,7 @@
 
 func (c *ProjectsLocationsDatasetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4654,7 +4654,7 @@
 
 func (c *ProjectsLocationsDatasetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4819,7 +4819,7 @@
 
 func (c *ProjectsLocationsDatasetsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4984,7 +4984,7 @@
 
 func (c *ProjectsLocationsDatasetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5162,7 +5162,7 @@
 
 func (c *ProjectsLocationsDatasetsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5313,7 +5313,7 @@
 
 func (c *ProjectsLocationsDatasetsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5463,7 +5463,7 @@
 
 func (c *ProjectsLocationsDatasetsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5611,7 +5611,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5767,7 +5767,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresDeidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5907,7 +5907,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6043,7 +6043,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6192,7 +6192,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6357,7 +6357,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6509,7 +6509,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6686,7 +6686,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6869,7 +6869,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7030,7 +7030,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresSearchForInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7155,7 +7155,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresSearchForSeriesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7281,7 +7281,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresSearchForStudiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7397,7 +7397,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7544,7 +7544,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStoreInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7664,7 +7664,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7806,7 +7806,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7962,7 +7962,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesRetrieveMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8088,7 +8088,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesRetrieveStudyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8214,7 +8214,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSearchForInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8339,7 +8339,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSearchForSeriesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8457,7 +8457,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesStoreInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8571,7 +8571,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8728,7 +8728,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesRetrieveMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8854,7 +8854,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesRetrieveSeriesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8980,7 +8980,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesSearchForInstancesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9095,7 +9095,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9252,7 +9252,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesRetrieveInstanceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9381,7 +9381,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesRetrieveMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9508,7 +9508,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesRetrieveRenderedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9635,7 +9635,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesFramesRetrieveFramesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9764,7 +9764,7 @@
 
 func (c *ProjectsLocationsDatasetsDicomStoresStudiesSeriesInstancesFramesRetrieveRenderedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9884,7 +9884,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10040,7 +10040,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresDeidentifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10179,7 +10179,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10330,7 +10330,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10479,7 +10479,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10644,7 +10644,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10894,7 +10894,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11071,7 +11071,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11254,7 +11254,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11405,7 +11405,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11555,7 +11555,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11753,7 +11753,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirObservationLastnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11914,7 +11914,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirPatientEverythingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12041,7 +12041,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirResourcePurgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12197,7 +12197,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirCapabilitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12319,7 +12319,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirConditionalDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12496,7 +12496,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirConditionalPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12649,7 +12649,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirConditionalUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12795,7 +12795,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12917,7 +12917,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13056,7 +13056,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirExecuteBundleCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13247,7 +13247,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirHistoryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13398,7 +13398,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13532,7 +13532,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirReadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13713,7 +13713,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13850,7 +13850,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13978,7 +13978,7 @@
 
 func (c *ProjectsLocationsDatasetsFhirStoresFhirVreadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14089,7 +14089,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14234,7 +14234,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14375,7 +14375,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14540,7 +14540,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14718,7 +14718,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14901,7 +14901,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15052,7 +15052,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15202,7 +15202,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15352,7 +15352,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15490,7 +15490,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15644,7 +15644,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15798,7 +15798,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesIngestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16046,7 +16046,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16238,7 +16238,7 @@
 
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16397,7 +16397,7 @@
 
 func (c *ProjectsLocationsDatasetsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16578,7 +16578,7 @@
 
 func (c *ProjectsLocationsDatasetsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/homegraph/v1/homegraph-gen.go b/homegraph/v1/homegraph-gen.go
index 05516c6..78a1aa3 100644
--- a/homegraph/v1/homegraph-gen.go
+++ b/homegraph/v1/homegraph-gen.go
@@ -1042,7 +1042,7 @@
 
 func (c *AgentUsersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1179,7 +1179,7 @@
 
 func (c *DevicesQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1324,7 +1324,7 @@
 
 func (c *DevicesReportStateAndNotificationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1456,7 +1456,7 @@
 
 func (c *DevicesRequestSyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1584,7 +1584,7 @@
 
 func (c *DevicesSyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/iam/v1/iam-gen.go b/iam/v1/iam-gen.go
index 1e7e882..4bcc7c3 100644
--- a/iam/v1/iam-gen.go
+++ b/iam/v1/iam-gen.go
@@ -2451,7 +2451,7 @@
 
 func (c *IamPoliciesLintPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2578,7 +2578,7 @@
 
 func (c *IamPoliciesQueryAuditableServicesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2705,7 +2705,7 @@
 
 func (c *OrganizationsRolesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2861,7 +2861,7 @@
 
 func (c *OrganizationsRolesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3008,7 +3008,7 @@
 
 func (c *OrganizationsRolesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3189,7 +3189,7 @@
 
 func (c *OrganizationsRolesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3377,7 +3377,7 @@
 
 func (c *OrganizationsRolesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3523,7 +3523,7 @@
 
 func (c *OrganizationsRolesUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3664,7 +3664,7 @@
 
 func (c *PermissionsQueryTestablePermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3812,7 +3812,7 @@
 
 func (c *ProjectsRolesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3968,7 +3968,7 @@
 
 func (c *ProjectsRolesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4115,7 +4115,7 @@
 
 func (c *ProjectsRolesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4296,7 +4296,7 @@
 
 func (c *ProjectsRolesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4484,7 +4484,7 @@
 
 func (c *ProjectsRolesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4630,7 +4630,7 @@
 
 func (c *ProjectsRolesUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4771,7 +4771,7 @@
 
 func (c *ProjectsServiceAccountsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4909,7 +4909,7 @@
 
 func (c *ProjectsServiceAccountsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5067,7 +5067,7 @@
 
 func (c *ProjectsServiceAccountsDisableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5221,7 +5221,7 @@
 
 func (c *ProjectsServiceAccountsEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5370,7 +5370,7 @@
 
 func (c *ProjectsServiceAccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5545,7 +5545,7 @@
 
 func (c *ProjectsServiceAccountsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5712,7 +5712,7 @@
 
 func (c *ProjectsServiceAccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5888,7 +5888,7 @@
 
 func (c *ProjectsServiceAccountsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6054,7 +6054,7 @@
 
 func (c *ProjectsServiceAccountsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6202,7 +6202,7 @@
 
 func (c *ProjectsServiceAccountsSignBlobCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6356,7 +6356,7 @@
 
 func (c *ProjectsServiceAccountsSignJwtCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6498,7 +6498,7 @@
 
 func (c *ProjectsServiceAccountsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6641,7 +6641,7 @@
 
 func (c *ProjectsServiceAccountsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6788,7 +6788,7 @@
 
 func (c *ProjectsServiceAccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6929,7 +6929,7 @@
 
 func (c *ProjectsServiceAccountsKeysCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7067,7 +7067,7 @@
 
 func (c *ProjectsServiceAccountsKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7222,7 +7222,7 @@
 
 func (c *ProjectsServiceAccountsKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7390,7 +7390,7 @@
 
 func (c *ProjectsServiceAccountsKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7539,7 +7539,7 @@
 
 func (c *ProjectsServiceAccountsKeysUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7688,7 +7688,7 @@
 
 func (c *RolesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7914,7 +7914,7 @@
 
 func (c *RolesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8090,7 +8090,7 @@
 
 func (c *RolesQueryGrantableRolesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/iamcredentials/v1/iamcredentials-gen.go b/iamcredentials/v1/iamcredentials-gen.go
index 1bbb5ac..786876d 100644
--- a/iamcredentials/v1/iamcredentials-gen.go
+++ b/iamcredentials/v1/iamcredentials-gen.go
@@ -538,7 +538,7 @@
 
 func (c *ProjectsServiceAccountsGenerateAccessTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -679,7 +679,7 @@
 
 func (c *ProjectsServiceAccountsGenerateIdTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -820,7 +820,7 @@
 
 func (c *ProjectsServiceAccountsSignBlobCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -961,7 +961,7 @@
 
 func (c *ProjectsServiceAccountsSignJwtCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/iap/v1/iap-gen.go b/iap/v1/iap-gen.go
index f46a50b..0682b44 100644
--- a/iap/v1/iap-gen.go
+++ b/iap/v1/iap-gen.go
@@ -891,7 +891,7 @@
 
 func (c *V1GetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1041,7 +1041,7 @@
 
 func (c *V1GetIapSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1182,7 +1182,7 @@
 
 func (c *V1SetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1328,7 +1328,7 @@
 
 func (c *V1TestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1481,7 +1481,7 @@
 
 func (c *V1UpdateIapSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/iap/v1beta1/iap-gen.go b/iap/v1beta1/iap-gen.go
index 0190cf6..c570a73 100644
--- a/iap/v1beta1/iap-gen.go
+++ b/iap/v1beta1/iap-gen.go
@@ -636,7 +636,7 @@
 
 func (c *V1beta1GetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -782,7 +782,7 @@
 
 func (c *V1beta1SetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -932,7 +932,7 @@
 
 func (c *V1beta1TestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/identitytoolkit/v3/identitytoolkit-gen.go b/identitytoolkit/v3/identitytoolkit-gen.go
index 89e51ff..a32d9c2 100644
--- a/identitytoolkit/v3/identitytoolkit-gen.go
+++ b/identitytoolkit/v3/identitytoolkit-gen.go
@@ -2458,7 +2458,7 @@
 
 func (c *RelyingpartyCreateAuthUriCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2580,7 +2580,7 @@
 
 func (c *RelyingpartyDeleteAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2702,7 +2702,7 @@
 
 func (c *RelyingpartyDownloadAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2846,7 +2846,7 @@
 
 func (c *RelyingpartyEmailLinkSigninCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2968,7 +2968,7 @@
 
 func (c *RelyingpartyGetAccountInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3090,7 +3090,7 @@
 
 func (c *RelyingpartyGetOobConfirmationCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3236,7 +3236,7 @@
 
 func (c *RelyingpartyGetProjectConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3376,7 +3376,7 @@
 
 func (c *RelyingpartyGetPublicKeysCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3482,7 +3482,7 @@
 
 func (c *RelyingpartyGetRecaptchaParamCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3599,7 +3599,7 @@
 
 func (c *RelyingpartyResetPasswordCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3721,7 +3721,7 @@
 
 func (c *RelyingpartySendVerificationCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3846,7 +3846,7 @@
 
 func (c *RelyingpartySetAccountInfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3968,7 +3968,7 @@
 
 func (c *RelyingpartySetProjectConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4092,7 +4092,7 @@
 
 func (c *RelyingpartySignOutUserCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4216,7 +4216,7 @@
 
 func (c *RelyingpartySignupNewUserCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4338,7 +4338,7 @@
 
 func (c *RelyingpartyUploadAccountCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4461,7 +4461,7 @@
 
 func (c *RelyingpartyVerifyAssertionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4583,7 +4583,7 @@
 
 func (c *RelyingpartyVerifyCustomTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4705,7 +4705,7 @@
 
 func (c *RelyingpartyVerifyPasswordCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4828,7 +4828,7 @@
 
 func (c *RelyingpartyVerifyPhoneNumberCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/indexing/v3/indexing-gen.go b/indexing/v3/indexing-gen.go
index 4fb2d38..22e23e4 100644
--- a/indexing/v3/indexing-gen.go
+++ b/indexing/v3/indexing-gen.go
@@ -324,7 +324,7 @@
 
 func (c *UrlNotificationsGetMetadataCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -450,7 +450,7 @@
 
 func (c *UrlNotificationsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/internal/version/version.go b/internal/version/version.go
index 12b6855..7112522 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -16,7 +16,7 @@
 
 // Repo is the current version of the client libraries in this
 // repo. It should be a date in YYYYMMDD format.
-const Repo = "20191102"
+const Repo = "20191103"
 
 // Go returns the Go runtime version. The returned string
 // has no whitespace.
diff --git a/jobs/v2/jobs-gen.go b/jobs/v2/jobs-gen.go
index 7618ae1..81a1a6b 100644
--- a/jobs/v2/jobs-gen.go
+++ b/jobs/v2/jobs-gen.go
@@ -5486,7 +5486,7 @@
 
 func (c *CompaniesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5612,7 +5612,7 @@
 
 func (c *CompaniesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5754,7 +5754,7 @@
 
 func (c *CompaniesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5925,7 +5925,7 @@
 
 func (c *CompaniesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6120,7 +6120,7 @@
 
 func (c *CompaniesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6335,7 +6335,7 @@
 
 func (c *CompaniesJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6516,7 +6516,7 @@
 
 func (c *JobsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6646,7 +6646,7 @@
 
 func (c *JobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6791,7 +6791,7 @@
 
 func (c *JobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6933,7 +6933,7 @@
 
 func (c *JobsDeleteByFilterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7072,7 +7072,7 @@
 
 func (c *JobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7222,7 +7222,7 @@
 
 func (c *JobsHistogramCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7407,7 +7407,7 @@
 
 func (c *JobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7577,7 +7577,7 @@
 
 func (c *JobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7721,7 +7721,7 @@
 
 func (c *JobsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7882,7 +7882,7 @@
 
 func (c *JobsSearchForAlertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8112,7 +8112,7 @@
 
 func (c *V2CompleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/jobs/v3/jobs-gen.go b/jobs/v3/jobs-gen.go
index 3680029..6d99f45 100644
--- a/jobs/v3/jobs-gen.go
+++ b/jobs/v3/jobs-gen.go
@@ -4626,7 +4626,7 @@
 
 func (c *ProjectsCompleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4821,7 +4821,7 @@
 
 func (c *ProjectsClientEventsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4962,7 +4962,7 @@
 
 func (c *ProjectsCompaniesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5102,7 +5102,7 @@
 
 func (c *ProjectsCompaniesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5244,7 +5244,7 @@
 
 func (c *ProjectsCompaniesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5416,7 +5416,7 @@
 
 func (c *ProjectsCompaniesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5593,7 +5593,7 @@
 
 func (c *ProjectsCompaniesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5734,7 +5734,7 @@
 
 func (c *ProjectsJobsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5879,7 +5879,7 @@
 
 func (c *ProjectsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6022,7 +6022,7 @@
 
 func (c *ProjectsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6166,7 +6166,7 @@
 
 func (c *ProjectsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6370,7 +6370,7 @@
 
 func (c *ProjectsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6559,7 +6559,7 @@
 
 func (c *ProjectsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6705,7 +6705,7 @@
 
 func (c *ProjectsJobsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6881,7 +6881,7 @@
 
 func (c *ProjectsJobsSearchForAlertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/jobs/v3p1beta1/jobs-gen.go b/jobs/v3p1beta1/jobs-gen.go
index bcfe68c..9c4de96 100644
--- a/jobs/v3p1beta1/jobs-gen.go
+++ b/jobs/v3p1beta1/jobs-gen.go
@@ -5118,7 +5118,7 @@
 
 func (c *ProjectsCompleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5313,7 +5313,7 @@
 
 func (c *ProjectsClientEventsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5454,7 +5454,7 @@
 
 func (c *ProjectsCompaniesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5594,7 +5594,7 @@
 
 func (c *ProjectsCompaniesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5736,7 +5736,7 @@
 
 func (c *ProjectsCompaniesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5908,7 +5908,7 @@
 
 func (c *ProjectsCompaniesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6085,7 +6085,7 @@
 
 func (c *ProjectsCompaniesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6226,7 +6226,7 @@
 
 func (c *ProjectsJobsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6371,7 +6371,7 @@
 
 func (c *ProjectsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6514,7 +6514,7 @@
 
 func (c *ProjectsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6658,7 +6658,7 @@
 
 func (c *ProjectsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6862,7 +6862,7 @@
 
 func (c *ProjectsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7051,7 +7051,7 @@
 
 func (c *ProjectsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7197,7 +7197,7 @@
 
 func (c *ProjectsJobsSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7373,7 +7373,7 @@
 
 func (c *ProjectsJobsSearchForAlertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7548,7 +7548,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/kgsearch/v1/kgsearch-gen.go b/kgsearch/v1/kgsearch-gen.go
index 0430b24..99794df 100644
--- a/kgsearch/v1/kgsearch-gen.go
+++ b/kgsearch/v1/kgsearch-gen.go
@@ -277,7 +277,7 @@
 
 func (c *EntitiesSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/language/v1/language-gen.go b/language/v1/language-gen.go
index e712dd0..00ef194 100644
--- a/language/v1/language-gen.go
+++ b/language/v1/language-gen.go
@@ -1623,7 +1623,7 @@
 
 func (c *DocumentsAnalyzeEntitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1751,7 +1751,7 @@
 
 func (c *DocumentsAnalyzeEntitySentimentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1877,7 +1877,7 @@
 
 func (c *DocumentsAnalyzeSentimentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2007,7 +2007,7 @@
 
 func (c *DocumentsAnalyzeSyntaxCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2135,7 +2135,7 @@
 
 func (c *DocumentsAnnotateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2261,7 +2261,7 @@
 
 func (c *DocumentsClassifyTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/language/v1beta1/language-gen.go b/language/v1beta1/language-gen.go
index 2d808a5..5b0dc3f 100644
--- a/language/v1beta1/language-gen.go
+++ b/language/v1beta1/language-gen.go
@@ -1352,7 +1352,7 @@
 
 func (c *DocumentsAnalyzeEntitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1478,7 +1478,7 @@
 
 func (c *DocumentsAnalyzeSentimentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1608,7 +1608,7 @@
 
 func (c *DocumentsAnalyzeSyntaxCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1736,7 +1736,7 @@
 
 func (c *DocumentsAnnotateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/language/v1beta2/language-gen.go b/language/v1beta2/language-gen.go
index 12201ee..d3917dc 100644
--- a/language/v1beta2/language-gen.go
+++ b/language/v1beta2/language-gen.go
@@ -1623,7 +1623,7 @@
 
 func (c *DocumentsAnalyzeEntitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1751,7 +1751,7 @@
 
 func (c *DocumentsAnalyzeEntitySentimentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1877,7 +1877,7 @@
 
 func (c *DocumentsAnalyzeSentimentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2007,7 +2007,7 @@
 
 func (c *DocumentsAnalyzeSyntaxCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2135,7 +2135,7 @@
 
 func (c *DocumentsAnnotateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2261,7 +2261,7 @@
 
 func (c *DocumentsClassifyTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/libraryagent/v1/libraryagent-gen.go b/libraryagent/v1/libraryagent-gen.go
index 25ead0b..f668863 100644
--- a/libraryagent/v1/libraryagent-gen.go
+++ b/libraryagent/v1/libraryagent-gen.go
@@ -369,7 +369,7 @@
 
 func (c *ShelvesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -532,7 +532,7 @@
 
 func (c *ShelvesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -693,7 +693,7 @@
 
 func (c *ShelvesBooksBorrowCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -834,7 +834,7 @@
 
 func (c *ShelvesBooksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1001,7 +1001,7 @@
 
 func (c *ShelvesBooksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1172,7 +1172,7 @@
 
 func (c *ShelvesBooksReturnCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/licensing/v1/licensing-gen.go b/licensing/v1/licensing-gen.go
index 779c6ad..29f135b 100644
--- a/licensing/v1/licensing-gen.go
+++ b/licensing/v1/licensing-gen.go
@@ -321,7 +321,7 @@
 
 func (c *LicenseAssignmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -452,7 +452,7 @@
 
 func (c *LicenseAssignmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -603,7 +603,7 @@
 
 func (c *LicenseAssignmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -779,7 +779,7 @@
 
 func (c *LicenseAssignmentsListForProductCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -987,7 +987,7 @@
 
 func (c *LicenseAssignmentsListForProductAndSkuCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1176,7 +1176,7 @@
 
 func (c *LicenseAssignmentsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1335,7 +1335,7 @@
 
 func (c *LicenseAssignmentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/lifesciences/v2beta/lifesciences-gen.go b/lifesciences/v2beta/lifesciences-gen.go
index cff31fb..ee36b08 100644
--- a/lifesciences/v2beta/lifesciences-gen.go
+++ b/lifesciences/v2beta/lifesciences-gen.go
@@ -1919,7 +1919,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2085,7 +2085,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2269,7 +2269,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2425,7 +2425,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2609,7 +2609,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2805,7 +2805,7 @@
 
 func (c *ProjectsLocationsPipelinesRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go
index cbc0b0a..b816672 100644
--- a/logging/v2/logging-gen.go
+++ b/logging/v2/logging-gen.go
@@ -2550,7 +2550,7 @@
 
 func (c *BillingAccountsExclusionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2689,7 +2689,7 @@
 
 func (c *BillingAccountsExclusionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2831,7 +2831,7 @@
 
 func (c *BillingAccountsExclusionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2997,7 +2997,7 @@
 
 func (c *BillingAccountsExclusionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3179,7 +3179,7 @@
 
 func (c *BillingAccountsExclusionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3327,7 +3327,7 @@
 
 func (c *BillingAccountsLogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3489,7 +3489,7 @@
 
 func (c *BillingAccountsLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3679,7 +3679,7 @@
 
 func (c *BillingAccountsSinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3824,7 +3824,7 @@
 
 func (c *BillingAccountsSinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3966,7 +3966,7 @@
 
 func (c *BillingAccountsSinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4132,7 +4132,7 @@
 
 func (c *BillingAccountsSinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4336,7 +4336,7 @@
 
 func (c *BillingAccountsSinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4522,7 +4522,7 @@
 
 func (c *BillingAccountsSinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4674,7 +4674,7 @@
 
 func (c *EntriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4828,7 +4828,7 @@
 
 func (c *EntriesWriteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4959,7 +4959,7 @@
 
 func (c *ExclusionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5098,7 +5098,7 @@
 
 func (c *ExclusionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5240,7 +5240,7 @@
 
 func (c *ExclusionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5406,7 +5406,7 @@
 
 func (c *ExclusionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5588,7 +5588,7 @@
 
 func (c *ExclusionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5737,7 +5737,7 @@
 
 func (c *FoldersExclusionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5876,7 +5876,7 @@
 
 func (c *FoldersExclusionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6018,7 +6018,7 @@
 
 func (c *FoldersExclusionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6184,7 +6184,7 @@
 
 func (c *FoldersExclusionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6366,7 +6366,7 @@
 
 func (c *FoldersExclusionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6514,7 +6514,7 @@
 
 func (c *FoldersLogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6676,7 +6676,7 @@
 
 func (c *FoldersLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6866,7 +6866,7 @@
 
 func (c *FoldersSinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7011,7 +7011,7 @@
 
 func (c *FoldersSinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7153,7 +7153,7 @@
 
 func (c *FoldersSinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7319,7 +7319,7 @@
 
 func (c *FoldersSinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7523,7 +7523,7 @@
 
 func (c *FoldersSinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7709,7 +7709,7 @@
 
 func (c *FoldersSinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7862,7 +7862,7 @@
 
 func (c *LogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8024,7 +8024,7 @@
 
 func (c *LogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8221,7 +8221,7 @@
 
 func (c *MonitoredResourceDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8383,7 +8383,7 @@
 
 func (c *OrganizationsExclusionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8522,7 +8522,7 @@
 
 func (c *OrganizationsExclusionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8664,7 +8664,7 @@
 
 func (c *OrganizationsExclusionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8830,7 +8830,7 @@
 
 func (c *OrganizationsExclusionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9012,7 +9012,7 @@
 
 func (c *OrganizationsExclusionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9160,7 +9160,7 @@
 
 func (c *OrganizationsLogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9322,7 +9322,7 @@
 
 func (c *OrganizationsLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9512,7 +9512,7 @@
 
 func (c *OrganizationsSinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9657,7 +9657,7 @@
 
 func (c *OrganizationsSinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9799,7 +9799,7 @@
 
 func (c *OrganizationsSinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9965,7 +9965,7 @@
 
 func (c *OrganizationsSinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10169,7 +10169,7 @@
 
 func (c *OrganizationsSinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10355,7 +10355,7 @@
 
 func (c *OrganizationsSinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10509,7 +10509,7 @@
 
 func (c *ProjectsExclusionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10648,7 +10648,7 @@
 
 func (c *ProjectsExclusionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10790,7 +10790,7 @@
 
 func (c *ProjectsExclusionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10956,7 +10956,7 @@
 
 func (c *ProjectsExclusionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11138,7 +11138,7 @@
 
 func (c *ProjectsExclusionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11286,7 +11286,7 @@
 
 func (c *ProjectsLogsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11448,7 +11448,7 @@
 
 func (c *ProjectsLogsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11618,7 +11618,7 @@
 
 func (c *ProjectsMetricsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11758,7 +11758,7 @@
 
 func (c *ProjectsMetricsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11901,7 +11901,7 @@
 
 func (c *ProjectsMetricsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12067,7 +12067,7 @@
 
 func (c *ProjectsMetricsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12237,7 +12237,7 @@
 
 func (c *ProjectsMetricsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12399,7 +12399,7 @@
 
 func (c *ProjectsSinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12544,7 +12544,7 @@
 
 func (c *ProjectsSinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12686,7 +12686,7 @@
 
 func (c *ProjectsSinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12852,7 +12852,7 @@
 
 func (c *ProjectsSinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13056,7 +13056,7 @@
 
 func (c *ProjectsSinksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13242,7 +13242,7 @@
 
 func (c *ProjectsSinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13414,7 +13414,7 @@
 
 func (c *SinksCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13559,7 +13559,7 @@
 
 func (c *SinksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13701,7 +13701,7 @@
 
 func (c *SinksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13867,7 +13867,7 @@
 
 func (c *SinksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14071,7 +14071,7 @@
 
 func (c *SinksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/manufacturers/v1/manufacturers-gen.go b/manufacturers/v1/manufacturers-gen.go
index fc95b06..274f75e 100644
--- a/manufacturers/v1/manufacturers-gen.go
+++ b/manufacturers/v1/manufacturers-gen.go
@@ -905,7 +905,7 @@
 
 func (c *AccountsProductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1081,7 +1081,7 @@
 
 func (c *AccountsProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1275,7 +1275,7 @@
 
 func (c *AccountsProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1481,7 +1481,7 @@
 
 func (c *AccountsProductsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/mirror/v1/mirror-gen.go b/mirror/v1/mirror-gen.go
index 6bccd4e..ce378e9 100644
--- a/mirror/v1/mirror-gen.go
+++ b/mirror/v1/mirror-gen.go
@@ -1361,7 +1361,7 @@
 
 func (c *AccountsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1510,7 +1510,7 @@
 
 func (c *ContactsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1621,7 +1621,7 @@
 
 func (c *ContactsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1752,7 +1752,7 @@
 
 func (c *ContactsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1883,7 +1883,7 @@
 
 func (c *ContactsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2003,7 +2003,7 @@
 
 func (c *ContactsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2141,7 +2141,7 @@
 
 func (c *ContactsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2288,7 +2288,7 @@
 
 func (c *LocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2429,7 +2429,7 @@
 
 func (c *LocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2558,7 +2558,7 @@
 
 func (c *SettingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2689,7 +2689,7 @@
 
 func (c *SubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2789,7 +2789,7 @@
 
 func (c *SubscriptionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2921,7 +2921,7 @@
 
 func (c *SubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3040,7 +3040,7 @@
 
 func (c *SubscriptionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3176,7 +3176,7 @@
 
 func (c *TimelineDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3288,7 +3288,7 @@
 
 func (c *TimelineGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3460,7 +3460,7 @@
 
 func (c *TimelineInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3694,7 +3694,7 @@
 
 func (c *TimelineListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3882,7 +3882,7 @@
 
 func (c *TimelinePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4061,7 +4061,7 @@
 
 func (c *TimelineUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4247,7 +4247,7 @@
 
 func (c *TimelineAttachmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4369,7 +4369,7 @@
 
 func (c *TimelineAttachmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4565,7 +4565,7 @@
 
 func (c *TimelineAttachmentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4751,7 +4751,7 @@
 
 func (c *TimelineAttachmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index e4085e1..cae7eac 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -3482,7 +3482,7 @@
 
 func (c *ProjectsGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3624,7 +3624,7 @@
 
 func (c *ProjectsPredictCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3769,7 +3769,7 @@
 
 func (c *ProjectsJobsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3909,7 +3909,7 @@
 
 func (c *ProjectsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4058,7 +4058,7 @@
 
 func (c *ProjectsJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4223,7 +4223,7 @@
 
 func (c *ProjectsJobsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4420,7 +4420,7 @@
 
 func (c *ProjectsJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4624,7 +4624,7 @@
 
 func (c *ProjectsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4775,7 +4775,7 @@
 
 func (c *ProjectsJobsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4925,7 +4925,7 @@
 
 func (c *ProjectsJobsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5077,7 +5077,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5245,7 +5245,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5421,7 +5421,7 @@
 
 func (c *ProjectsModelsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5566,7 +5566,7 @@
 
 func (c *ProjectsModelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5711,7 +5711,7 @@
 
 func (c *ProjectsModelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5876,7 +5876,7 @@
 
 func (c *ProjectsModelsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6064,7 +6064,7 @@
 
 func (c *ProjectsModelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6266,7 +6266,7 @@
 
 func (c *ProjectsModelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6417,7 +6417,7 @@
 
 func (c *ProjectsModelsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6567,7 +6567,7 @@
 
 func (c *ProjectsModelsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6722,7 +6722,7 @@
 
 func (c *ProjectsModelsVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6868,7 +6868,7 @@
 
 func (c *ProjectsModelsVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7017,7 +7017,7 @@
 
 func (c *ProjectsModelsVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7201,7 +7201,7 @@
 
 func (c *ProjectsModelsVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7406,7 +7406,7 @@
 
 func (c *ProjectsModelsVersionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7563,7 +7563,7 @@
 
 func (c *ProjectsModelsVersionsSetDefaultCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7718,7 +7718,7 @@
 
 func (c *ProjectsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7863,7 +7863,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8044,7 +8044,7 @@
 
 func (c *ProjectsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/monitoring/v3/monitoring-gen.go b/monitoring/v3/monitoring-gen.go
index 37cadfd..038d648 100644
--- a/monitoring/v3/monitoring-gen.go
+++ b/monitoring/v3/monitoring-gen.go
@@ -4102,7 +4102,7 @@
 
 func (c *ProjectsAlertPoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4241,7 +4241,7 @@
 
 func (c *ProjectsAlertPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4383,7 +4383,7 @@
 
 func (c *ProjectsAlertPoliciesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4563,7 +4563,7 @@
 
 func (c *ProjectsAlertPoliciesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4769,7 +4769,7 @@
 
 func (c *ProjectsAlertPoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4919,7 +4919,7 @@
 
 func (c *ProjectsCollectdTimeSeriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5068,7 +5068,7 @@
 
 func (c *ProjectsGroupsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5221,7 +5221,7 @@
 
 func (c *ProjectsGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5368,7 +5368,7 @@
 
 func (c *ProjectsGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5560,7 +5560,7 @@
 
 func (c *ProjectsGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5752,7 +5752,7 @@
 
 func (c *ProjectsGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5950,7 +5950,7 @@
 
 func (c *ProjectsGroupsMembersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6137,7 +6137,7 @@
 
 func (c *ProjectsMetricDescriptorsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6278,7 +6278,7 @@
 
 func (c *ProjectsMetricDescriptorsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6421,7 +6421,7 @@
 
 func (c *ProjectsMetricDescriptorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6596,7 +6596,7 @@
 
 func (c *ProjectsMetricDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6781,7 +6781,7 @@
 
 func (c *ProjectsMonitoredResourceDescriptorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6956,7 +6956,7 @@
 
 func (c *ProjectsMonitoredResourceDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7144,7 +7144,7 @@
 
 func (c *ProjectsNotificationChannelDescriptorsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7308,7 +7308,7 @@
 
 func (c *ProjectsNotificationChannelDescriptorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7481,7 +7481,7 @@
 
 func (c *ProjectsNotificationChannelsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7630,7 +7630,7 @@
 
 func (c *ProjectsNotificationChannelsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7782,7 +7782,7 @@
 
 func (c *ProjectsNotificationChannelsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7939,7 +7939,7 @@
 
 func (c *ProjectsNotificationChannelsGetVerificationCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8127,7 +8127,7 @@
 
 func (c *ProjectsNotificationChannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8314,7 +8314,7 @@
 
 func (c *ProjectsNotificationChannelsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8463,7 +8463,7 @@
 
 func (c *ProjectsNotificationChannelsSendVerificationCodeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8606,7 +8606,7 @@
 
 func (c *ProjectsNotificationChannelsVerifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8750,7 +8750,7 @@
 
 func (c *ProjectsTimeSeriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9068,7 +9068,7 @@
 
 func (c *ProjectsTimeSeriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9327,7 +9327,7 @@
 
 func (c *ProjectsUptimeCheckConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9469,7 +9469,7 @@
 
 func (c *ProjectsUptimeCheckConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9611,7 +9611,7 @@
 
 func (c *ProjectsUptimeCheckConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9777,7 +9777,7 @@
 
 func (c *ProjectsUptimeCheckConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9959,7 +9959,7 @@
 
 func (c *ProjectsUptimeCheckConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10133,7 +10133,7 @@
 
 func (c *UptimeCheckIpsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/oauth2/v1/oauth2-gen.go b/oauth2/v1/oauth2-gen.go
index bc83ba3..871ff2f 100644
--- a/oauth2/v1/oauth2-gen.go
+++ b/oauth2/v1/oauth2-gen.go
@@ -368,7 +368,7 @@
 
 func (c *TokeninfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -500,7 +500,7 @@
 
 func (c *UserinfoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -628,7 +628,7 @@
 
 func (c *UserinfoV2MeGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/oauth2/v2/oauth2-gen.go b/oauth2/v2/oauth2-gen.go
index 05858b2..4b9e3ca 100644
--- a/oauth2/v2/oauth2-gen.go
+++ b/oauth2/v2/oauth2-gen.go
@@ -422,7 +422,7 @@
 
 func (c *GetCertForOpenIdConnectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -551,7 +551,7 @@
 
 func (c *TokeninfoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -684,7 +684,7 @@
 
 func (c *UserinfoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -811,7 +811,7 @@
 
 func (c *UserinfoV2MeGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/oslogin/v1/oslogin-gen.go b/oslogin/v1/oslogin-gen.go
index af4b0b4..90e6f87 100644
--- a/oslogin/v1/oslogin-gen.go
+++ b/oslogin/v1/oslogin-gen.go
@@ -452,7 +452,7 @@
 
 func (c *UsersGetLoginProfileCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -609,7 +609,7 @@
 
 func (c *UsersImportSshPublicKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -753,7 +753,7 @@
 
 func (c *UsersProjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -884,7 +884,7 @@
 
 func (c *UsersSshPublicKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1026,7 +1026,7 @@
 
 func (c *UsersSshPublicKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1171,7 +1171,7 @@
 
 func (c *UsersSshPublicKeysPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/oslogin/v1alpha/oslogin-gen.go b/oslogin/v1alpha/oslogin-gen.go
index 24f72c3..4d0bcfb 100644
--- a/oslogin/v1alpha/oslogin-gen.go
+++ b/oslogin/v1alpha/oslogin-gen.go
@@ -473,7 +473,7 @@
 
 func (c *UsersGetLoginProfileCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -642,7 +642,7 @@
 
 func (c *UsersImportSshPublicKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -799,7 +799,7 @@
 
 func (c *UsersProjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -940,7 +940,7 @@
 
 func (c *UsersSshPublicKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1082,7 +1082,7 @@
 
 func (c *UsersSshPublicKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1227,7 +1227,7 @@
 
 func (c *UsersSshPublicKeysPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/oslogin/v1beta/oslogin-gen.go b/oslogin/v1beta/oslogin-gen.go
index 7b51ca8..d949e0c 100644
--- a/oslogin/v1beta/oslogin-gen.go
+++ b/oslogin/v1beta/oslogin-gen.go
@@ -460,7 +460,7 @@
 
 func (c *UsersGetLoginProfileCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -619,7 +619,7 @@
 
 func (c *UsersImportSshPublicKeyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -763,7 +763,7 @@
 
 func (c *UsersProjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -894,7 +894,7 @@
 
 func (c *UsersSshPublicKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1036,7 +1036,7 @@
 
 func (c *UsersSshPublicKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1181,7 +1181,7 @@
 
 func (c *UsersSshPublicKeysPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pagespeedonline/v1/pagespeedonline-gen.go b/pagespeedonline/v1/pagespeedonline-gen.go
index 98d0fb1..9697664 100644
--- a/pagespeedonline/v1/pagespeedonline-gen.go
+++ b/pagespeedonline/v1/pagespeedonline-gen.go
@@ -792,7 +792,7 @@
 
 func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pagespeedonline/v2/pagespeedonline-gen.go b/pagespeedonline/v2/pagespeedonline-gen.go
index 4929a8e..790a70b 100644
--- a/pagespeedonline/v2/pagespeedonline-gen.go
+++ b/pagespeedonline/v2/pagespeedonline-gen.go
@@ -831,7 +831,7 @@
 
 func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pagespeedonline/v4/pagespeedonline-gen.go b/pagespeedonline/v4/pagespeedonline-gen.go
index fbff020..f2f721e 100644
--- a/pagespeedonline/v4/pagespeedonline-gen.go
+++ b/pagespeedonline/v4/pagespeedonline-gen.go
@@ -987,7 +987,7 @@
 
 func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pagespeedonline/v5/pagespeedonline-gen.go b/pagespeedonline/v5/pagespeedonline-gen.go
index 706cc69..3210d46 100644
--- a/pagespeedonline/v5/pagespeedonline-gen.go
+++ b/pagespeedonline/v5/pagespeedonline-gen.go
@@ -1049,7 +1049,7 @@
 
 func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/people/v1/people-gen.go b/people/v1/people-gen.go
index 4c6b751..9cfdc6d 100644
--- a/people/v1/people-gen.go
+++ b/people/v1/people-gen.go
@@ -2757,7 +2757,7 @@
 
 func (c *ContactGroupsBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2891,7 +2891,7 @@
 
 func (c *ContactGroupsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3025,7 +3025,7 @@
 
 func (c *ContactGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3181,7 +3181,7 @@
 
 func (c *ContactGroupsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3360,7 +3360,7 @@
 
 func (c *ContactGroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3523,7 +3523,7 @@
 
 func (c *ContactGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3670,7 +3670,7 @@
 
 func (c *ContactGroupsMembersModifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3810,7 +3810,7 @@
 
 func (c *PeopleCreateContactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3936,7 +3936,7 @@
 
 func (c *PeopleDeleteContactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4106,7 +4106,7 @@
 
 func (c *PeopleDeleteContactPhotoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4308,7 +4308,7 @@
 
 func (c *PeopleGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4545,7 +4545,7 @@
 
 func (c *PeopleGetBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4743,7 +4743,7 @@
 
 func (c *PeopleUpdateContactCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4889,7 +4889,7 @@
 
 func (c *PeopleUpdateContactPhotoCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5148,7 +5148,7 @@
 
 func (c *PeopleConnectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/playcustomapp/v1/playcustomapp-gen.go b/playcustomapp/v1/playcustomapp-gen.go
index ba4bfb4..8dee35e 100644
--- a/playcustomapp/v1/playcustomapp-gen.go
+++ b/playcustomapp/v1/playcustomapp-gen.go
@@ -272,7 +272,7 @@
 
 func (c *AccountsCustomAppsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/plus/v1/plus-gen.go b/plus/v1/plus-gen.go
index 17dd196..0def171 100644
--- a/plus/v1/plus-gen.go
+++ b/plus/v1/plus-gen.go
@@ -2342,7 +2342,7 @@
 
 func (c *ActivitiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2506,7 +2506,7 @@
 
 func (c *ActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2738,7 +2738,7 @@
 
 func (c *ActivitiesSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2934,7 +2934,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3107,7 +3107,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3301,7 +3301,7 @@
 
 func (c *PeopleGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3477,7 +3477,7 @@
 
 func (c *PeopleListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3705,7 +3705,7 @@
 
 func (c *PeopleListByActivityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3926,7 +3926,7 @@
 
 func (c *PeopleSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/plusdomains/v1/plusdomains-gen.go b/plusdomains/v1/plusdomains-gen.go
index 5a203b4..994a0da 100644
--- a/plusdomains/v1/plusdomains-gen.go
+++ b/plusdomains/v1/plusdomains-gen.go
@@ -2875,7 +2875,7 @@
 
 func (c *ActivitiesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3040,7 +3040,7 @@
 
 func (c *ActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3252,7 +3252,7 @@
 
 func (c *AudiencesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3450,7 +3450,7 @@
 
 func (c *CirclesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3630,7 +3630,7 @@
 
 func (c *CommentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3803,7 +3803,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4029,7 +4029,7 @@
 
 func (c *MediaInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4236,7 +4236,7 @@
 
 func (c *PeopleGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4413,7 +4413,7 @@
 
 func (c *PeopleListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4640,7 +4640,7 @@
 
 func (c *PeopleListByActivityCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/policytroubleshooter/v1beta/policytroubleshooter-gen.go b/policytroubleshooter/v1beta/policytroubleshooter-gen.go
index 28a2122..a66846d 100644
--- a/policytroubleshooter/v1beta/policytroubleshooter-gen.go
+++ b/policytroubleshooter/v1beta/policytroubleshooter-gen.go
@@ -1026,7 +1026,7 @@
 
 func (c *IamTroubleshootCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/poly/v1/poly-gen.go b/poly/v1/poly-gen.go
index 26f3254..5dda81f 100644
--- a/poly/v1/poly-gen.go
+++ b/poly/v1/poly-gen.go
@@ -1077,7 +1077,7 @@
 
 func (c *AssetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1300,7 +1300,7 @@
 
 func (c *AssetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1556,7 +1556,7 @@
 
 func (c *UsersAssetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1790,7 +1790,7 @@
 
 func (c *UsersLikedassetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/proximitybeacon/v1beta1/proximitybeacon-gen.go b/proximitybeacon/v1beta1/proximitybeacon-gen.go
index 7199254..f4550ba 100644
--- a/proximitybeacon/v1beta1/proximitybeacon-gen.go
+++ b/proximitybeacon/v1beta1/proximitybeacon-gen.go
@@ -1426,7 +1426,7 @@
 
 func (c *BeaconinfoGetforobservedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1573,7 +1573,7 @@
 
 func (c *BeaconsActivateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1733,7 +1733,7 @@
 
 func (c *BeaconsDeactivateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1892,7 +1892,7 @@
 
 func (c *BeaconsDecommissionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2047,7 +2047,7 @@
 
 func (c *BeaconsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2222,7 +2222,7 @@
 
 func (c *BeaconsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2499,7 +2499,7 @@
 
 func (c *BeaconsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2683,7 +2683,7 @@
 
 func (c *BeaconsRegisterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2845,7 +2845,7 @@
 
 func (c *BeaconsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3029,7 +3029,7 @@
 
 func (c *BeaconsAttachmentsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3204,7 +3204,7 @@
 
 func (c *BeaconsAttachmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3371,7 +3371,7 @@
 
 func (c *BeaconsAttachmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3557,7 +3557,7 @@
 
 func (c *BeaconsAttachmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3763,7 +3763,7 @@
 
 func (c *BeaconsDiagnosticsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3973,7 +3973,7 @@
 
 func (c *NamespacesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4113,7 +4113,7 @@
 
 func (c *NamespacesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4277,7 +4277,7 @@
 
 func (c *V1beta1GetEidparamsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pubsub/v1/pubsub-gen.go b/pubsub/v1/pubsub-gen.go
index 885ab26..0444485 100644
--- a/pubsub/v1/pubsub-gen.go
+++ b/pubsub/v1/pubsub-gen.go
@@ -1890,7 +1890,7 @@
 
 func (c *ProjectsSnapshotsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2046,7 +2046,7 @@
 
 func (c *ProjectsSnapshotsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2197,7 +2197,7 @@
 
 func (c *ProjectsSnapshotsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2363,7 +2363,7 @@
 
 func (c *ProjectsSnapshotsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2540,7 +2540,7 @@
 
 func (c *ProjectsSnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2717,7 +2717,7 @@
 
 func (c *ProjectsSnapshotsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2863,7 +2863,7 @@
 
 func (c *ProjectsSnapshotsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3014,7 +3014,7 @@
 
 func (c *ProjectsSnapshotsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3165,7 +3165,7 @@
 
 func (c *ProjectsSubscriptionsAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3325,7 +3325,7 @@
 
 func (c *ProjectsSubscriptionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3472,7 +3472,7 @@
 
 func (c *ProjectsSubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3614,7 +3614,7 @@
 
 func (c *ProjectsSubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3780,7 +3780,7 @@
 
 func (c *ProjectsSubscriptionsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3948,7 +3948,7 @@
 
 func (c *ProjectsSubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4124,7 +4124,7 @@
 
 func (c *ProjectsSubscriptionsModifyAckDeadlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4275,7 +4275,7 @@
 
 func (c *ProjectsSubscriptionsModifyPushConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4418,7 +4418,7 @@
 
 func (c *ProjectsSubscriptionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4563,7 +4563,7 @@
 
 func (c *ProjectsSubscriptionsPullCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4717,7 +4717,7 @@
 
 func (c *ProjectsSubscriptionsSeekCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4863,7 +4863,7 @@
 
 func (c *ProjectsSubscriptionsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5014,7 +5014,7 @@
 
 func (c *ProjectsSubscriptionsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5159,7 +5159,7 @@
 
 func (c *ProjectsTopicsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5306,7 +5306,7 @@
 
 func (c *ProjectsTopicsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5448,7 +5448,7 @@
 
 func (c *ProjectsTopicsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5614,7 +5614,7 @@
 
 func (c *ProjectsTopicsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5782,7 +5782,7 @@
 
 func (c *ProjectsTopicsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5952,7 +5952,7 @@
 
 func (c *ProjectsTopicsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6095,7 +6095,7 @@
 
 func (c *ProjectsTopicsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6241,7 +6241,7 @@
 
 func (c *ProjectsTopicsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6392,7 +6392,7 @@
 
 func (c *ProjectsTopicsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6569,7 +6569,7 @@
 
 func (c *ProjectsTopicsSnapshotsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6763,7 +6763,7 @@
 
 func (c *ProjectsTopicsSubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pubsub/v1beta1a/pubsub-gen.go b/pubsub/v1beta1a/pubsub-gen.go
index f23db8b..487c2f0 100644
--- a/pubsub/v1beta1a/pubsub-gen.go
+++ b/pubsub/v1beta1a/pubsub-gen.go
@@ -973,7 +973,7 @@
 
 func (c *SubscriptionsAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1106,7 +1106,7 @@
 
 func (c *SubscriptionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1236,7 +1236,7 @@
 
 func (c *SubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1378,7 +1378,7 @@
 
 func (c *SubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1543,7 +1543,7 @@
 
 func (c *SubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1703,7 +1703,7 @@
 
 func (c *SubscriptionsModifyAckDeadlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1837,7 +1837,7 @@
 
 func (c *SubscriptionsModifyPushConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1970,7 +1970,7 @@
 
 func (c *SubscriptionsPullCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2101,7 +2101,7 @@
 
 func (c *SubscriptionsPullBatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2227,7 +2227,7 @@
 
 func (c *TopicsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2357,7 +2357,7 @@
 
 func (c *TopicsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2504,7 +2504,7 @@
 
 func (c *TopicsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2669,7 +2669,7 @@
 
 func (c *TopicsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2830,7 +2830,7 @@
 
 func (c *TopicsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2958,7 +2958,7 @@
 
 func (c *TopicsPublishBatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/pubsub/v1beta2/pubsub-gen.go b/pubsub/v1beta2/pubsub-gen.go
index 7a6ea15..88113e2 100644
--- a/pubsub/v1beta2/pubsub-gen.go
+++ b/pubsub/v1beta2/pubsub-gen.go
@@ -1337,7 +1337,7 @@
 
 func (c *ProjectsSubscriptionsAcknowledgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1486,7 +1486,7 @@
 
 func (c *ProjectsSubscriptionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1633,7 +1633,7 @@
 
 func (c *ProjectsSubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1775,7 +1775,7 @@
 
 func (c *ProjectsSubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1941,7 +1941,7 @@
 
 func (c *ProjectsSubscriptionsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2109,7 +2109,7 @@
 
 func (c *ProjectsSubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2285,7 +2285,7 @@
 
 func (c *ProjectsSubscriptionsModifyAckDeadlineCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2436,7 +2436,7 @@
 
 func (c *ProjectsSubscriptionsModifyPushConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2583,7 +2583,7 @@
 
 func (c *ProjectsSubscriptionsPullCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2729,7 +2729,7 @@
 
 func (c *ProjectsSubscriptionsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2880,7 +2880,7 @@
 
 func (c *ProjectsSubscriptionsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3021,7 +3021,7 @@
 
 func (c *ProjectsTopicsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3168,7 +3168,7 @@
 
 func (c *ProjectsTopicsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3310,7 +3310,7 @@
 
 func (c *ProjectsTopicsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3476,7 +3476,7 @@
 
 func (c *ProjectsTopicsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3644,7 +3644,7 @@
 
 func (c *ProjectsTopicsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3816,7 +3816,7 @@
 
 func (c *ProjectsTopicsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3962,7 +3962,7 @@
 
 func (c *ProjectsTopicsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4113,7 +4113,7 @@
 
 func (c *ProjectsTopicsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4280,7 +4280,7 @@
 
 func (c *ProjectsTopicsSubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/recommender/v1beta1/recommender-gen.go b/recommender/v1beta1/recommender-gen.go
index 7bf4bef..391a59c 100644
--- a/recommender/v1beta1/recommender-gen.go
+++ b/recommender/v1beta1/recommender-gen.go
@@ -871,7 +871,7 @@
 
 func (c *ProjectsLocationsRecommendersRecommendationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1050,7 +1050,7 @@
 
 func (c *ProjectsLocationsRecommendersRecommendationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1239,7 +1239,7 @@
 
 func (c *ProjectsLocationsRecommendersRecommendationsMarkClaimedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1395,7 +1395,7 @@
 
 func (c *ProjectsLocationsRecommendersRecommendationsMarkFailedCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1551,7 +1551,7 @@
 
 func (c *ProjectsLocationsRecommendersRecommendationsMarkSucceededCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/redis/v1/redis-gen.go b/redis/v1/redis-gen.go
index c393434..010aa4b 100644
--- a/redis/v1/redis-gen.go
+++ b/redis/v1/redis-gen.go
@@ -1078,7 +1078,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1244,7 +1244,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1447,7 +1447,7 @@
 
 func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1592,7 +1592,7 @@
 
 func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1731,7 +1731,7 @@
 
 func (c *ProjectsLocationsInstancesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1873,7 +1873,7 @@
 
 func (c *ProjectsLocationsInstancesFailoverCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2022,7 +2022,7 @@
 
 func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2168,7 +2168,7 @@
 
 func (c *ProjectsLocationsInstancesImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2349,7 +2349,7 @@
 
 func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2538,7 +2538,7 @@
 
 func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2699,7 +2699,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2835,7 +2835,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2980,7 +2980,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3161,7 +3161,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/redis/v1beta1/redis-gen.go b/redis/v1beta1/redis-gen.go
index 09523a9..5118166 100644
--- a/redis/v1beta1/redis-gen.go
+++ b/redis/v1beta1/redis-gen.go
@@ -1085,7 +1085,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1251,7 +1251,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1454,7 +1454,7 @@
 
 func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1599,7 +1599,7 @@
 
 func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1738,7 +1738,7 @@
 
 func (c *ProjectsLocationsInstancesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1880,7 +1880,7 @@
 
 func (c *ProjectsLocationsInstancesFailoverCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2029,7 +2029,7 @@
 
 func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2175,7 +2175,7 @@
 
 func (c *ProjectsLocationsInstancesImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2356,7 +2356,7 @@
 
 func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2545,7 +2545,7 @@
 
 func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2706,7 +2706,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2842,7 +2842,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2987,7 +2987,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3168,7 +3168,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/remotebuildexecution/v1/remotebuildexecution-gen.go b/remotebuildexecution/v1/remotebuildexecution-gen.go
index d07bb58..2aae562 100644
--- a/remotebuildexecution/v1/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v1/remotebuildexecution-gen.go
@@ -3440,7 +3440,7 @@
 
 func (c *MediaDownloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3633,7 +3633,7 @@
 
 func (c *MediaUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3830,7 +3830,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3974,7 +3974,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4152,7 +4152,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4338,7 +4338,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/remotebuildexecution/v1alpha/remotebuildexecution-gen.go b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
index f315f52..c11ad6d 100644
--- a/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
@@ -3359,7 +3359,7 @@
 
 func (c *ProjectsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3503,7 +3503,7 @@
 
 func (c *ProjectsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3644,7 +3644,7 @@
 
 func (c *ProjectsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3791,7 +3791,7 @@
 
 func (c *ProjectsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3935,7 +3935,7 @@
 
 func (c *ProjectsInstancesWorkerpoolsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4079,7 +4079,7 @@
 
 func (c *ProjectsInstancesWorkerpoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4220,7 +4220,7 @@
 
 func (c *ProjectsInstancesWorkerpoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4409,7 +4409,7 @@
 
 func (c *ProjectsInstancesWorkerpoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4558,7 +4558,7 @@
 
 func (c *ProjectsInstancesWorkerpoolsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4711,7 +4711,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/remotebuildexecution/v2/remotebuildexecution-gen.go b/remotebuildexecution/v2/remotebuildexecution-gen.go
index 6ab577d..f75bfae 100644
--- a/remotebuildexecution/v2/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v2/remotebuildexecution-gen.go
@@ -4201,7 +4201,7 @@
 
 func (c *ActionResultsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4411,7 +4411,7 @@
 
 func (c *ActionResultsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4666,7 +4666,7 @@
 
 func (c *ActionsExecuteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4829,7 +4829,7 @@
 
 func (c *BlobsBatchReadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4998,7 +4998,7 @@
 
 func (c *BlobsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5147,7 +5147,7 @@
 
 func (c *BlobsFindMissingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5351,7 +5351,7 @@
 
 func (c *BlobsGetTreeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5547,7 +5547,7 @@
 
 func (c *OperationsWaitExecutionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5705,7 +5705,7 @@
 
 func (c *V2GetCapabilitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/replicapool/v1beta1/replicapool-gen.go b/replicapool/v1beta1/replicapool-gen.go
index 4101037..b175b68 100644
--- a/replicapool/v1beta1/replicapool-gen.go
+++ b/replicapool/v1beta1/replicapool-gen.go
@@ -1178,7 +1178,7 @@
 
 func (c *PoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1319,7 +1319,7 @@
 
 func (c *PoolsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1475,7 +1475,7 @@
 
 func (c *PoolsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1650,7 +1650,7 @@
 
 func (c *PoolsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1844,7 +1844,7 @@
 
 func (c *PoolsResizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2002,7 +2002,7 @@
 
 func (c *PoolsUpdatetemplateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2136,7 +2136,7 @@
 
 func (c *ReplicasDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2315,7 +2315,7 @@
 
 func (c *ReplicasGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2506,7 +2506,7 @@
 
 func (c *ReplicasListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2699,7 +2699,7 @@
 
 func (c *ReplicasRestartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/reseller/v1/reseller-gen.go b/reseller/v1/reseller-gen.go
index 6b138d8..0506ec6 100644
--- a/reseller/v1/reseller-gen.go
+++ b/reseller/v1/reseller-gen.go
@@ -938,7 +938,7 @@
 
 func (c *CustomersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1082,7 +1082,7 @@
 
 func (c *CustomersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1214,7 +1214,7 @@
 
 func (c *CustomersPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1352,7 +1352,7 @@
 
 func (c *CustomersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1498,7 +1498,7 @@
 
 func (c *ResellernotifyGetwatchdetailsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1623,7 +1623,7 @@
 
 func (c *ResellernotifyRegisterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1750,7 +1750,7 @@
 
 func (c *ResellernotifyUnregisterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1874,7 +1874,7 @@
 
 func (c *SubscriptionsActivateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2016,7 +2016,7 @@
 
 func (c *SubscriptionsChangePlanCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2165,7 +2165,7 @@
 
 func (c *SubscriptionsChangeRenewalSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2313,7 +2313,7 @@
 
 func (c *SubscriptionsChangeSeatsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2460,7 +2460,7 @@
 
 func (c *SubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2596,7 +2596,7 @@
 
 func (c *SubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2750,7 +2750,7 @@
 
 func (c *SubscriptionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2954,7 +2954,7 @@
 
 func (c *SubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3126,7 +3126,7 @@
 
 func (c *SubscriptionsStartPaidServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3264,7 +3264,7 @@
 
 func (c *SubscriptionsSuspendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/run/v1/run-gen.go b/run/v1/run-gen.go
index c3a6c3a..08bd2ed 100644
--- a/run/v1/run-gen.go
+++ b/run/v1/run-gen.go
@@ -4892,7 +4892,7 @@
 
 func (c *NamespacesAuthorizeddomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5059,7 +5059,7 @@
 
 func (c *NamespacesAutodomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5224,7 +5224,7 @@
 
 func (c *NamespacesAutodomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5380,7 +5380,7 @@
 
 func (c *NamespacesAutodomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5579,7 +5579,7 @@
 
 func (c *NamespacesAutodomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5759,7 +5759,7 @@
 
 func (c *NamespacesAutodomainmappingsReplaceAutoDomainMappingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5899,7 +5899,7 @@
 
 func (c *NamespacesConfigurationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6069,7 +6069,7 @@
 
 func (c *NamespacesConfigurationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6225,7 +6225,7 @@
 
 func (c *NamespacesConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6424,7 +6424,7 @@
 
 func (c *NamespacesConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6604,7 +6604,7 @@
 
 func (c *NamespacesConfigurationsReplaceConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6744,7 +6744,7 @@
 
 func (c *NamespacesDomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6909,7 +6909,7 @@
 
 func (c *NamespacesDomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7065,7 +7065,7 @@
 
 func (c *NamespacesDomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7264,7 +7264,7 @@
 
 func (c *NamespacesDomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7444,7 +7444,7 @@
 
 func (c *NamespacesDomainmappingsReplaceDomainMappingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7609,7 +7609,7 @@
 
 func (c *NamespacesRevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7765,7 +7765,7 @@
 
 func (c *NamespacesRevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7964,7 +7964,7 @@
 
 func (c *NamespacesRevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8135,7 +8135,7 @@
 
 func (c *NamespacesRoutesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8301,7 +8301,7 @@
 
 func (c *NamespacesRoutesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8457,7 +8457,7 @@
 
 func (c *NamespacesRoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8656,7 +8656,7 @@
 
 func (c *NamespacesRoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8836,7 +8836,7 @@
 
 func (c *NamespacesRoutesReplaceRouteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8976,7 +8976,7 @@
 
 func (c *NamespacesServicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9144,7 +9144,7 @@
 
 func (c *NamespacesServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9300,7 +9300,7 @@
 
 func (c *NamespacesServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9499,7 +9499,7 @@
 
 func (c *NamespacesServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9679,7 +9679,7 @@
 
 func (c *NamespacesServicesReplaceServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9828,7 +9828,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9994,7 +9994,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10189,7 +10189,7 @@
 
 func (c *ProjectsLocationsAuthorizeddomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10356,7 +10356,7 @@
 
 func (c *ProjectsLocationsAutodomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10521,7 +10521,7 @@
 
 func (c *ProjectsLocationsAutodomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10677,7 +10677,7 @@
 
 func (c *ProjectsLocationsAutodomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10876,7 +10876,7 @@
 
 func (c *ProjectsLocationsAutodomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11056,7 +11056,7 @@
 
 func (c *ProjectsLocationsAutodomainmappingsReplaceAutoDomainMappingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11196,7 +11196,7 @@
 
 func (c *ProjectsLocationsConfigurationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11366,7 +11366,7 @@
 
 func (c *ProjectsLocationsConfigurationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11522,7 +11522,7 @@
 
 func (c *ProjectsLocationsConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11721,7 +11721,7 @@
 
 func (c *ProjectsLocationsConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11901,7 +11901,7 @@
 
 func (c *ProjectsLocationsConfigurationsReplaceConfigurationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12041,7 +12041,7 @@
 
 func (c *ProjectsLocationsDomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12206,7 +12206,7 @@
 
 func (c *ProjectsLocationsDomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12362,7 +12362,7 @@
 
 func (c *ProjectsLocationsDomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12561,7 +12561,7 @@
 
 func (c *ProjectsLocationsDomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12741,7 +12741,7 @@
 
 func (c *ProjectsLocationsDomainmappingsReplaceDomainMappingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12906,7 +12906,7 @@
 
 func (c *ProjectsLocationsRevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13062,7 +13062,7 @@
 
 func (c *ProjectsLocationsRevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13261,7 +13261,7 @@
 
 func (c *ProjectsLocationsRevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13432,7 +13432,7 @@
 
 func (c *ProjectsLocationsRoutesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13598,7 +13598,7 @@
 
 func (c *ProjectsLocationsRoutesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13754,7 +13754,7 @@
 
 func (c *ProjectsLocationsRoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13953,7 +13953,7 @@
 
 func (c *ProjectsLocationsRoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14133,7 +14133,7 @@
 
 func (c *ProjectsLocationsRoutesReplaceRouteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14273,7 +14273,7 @@
 
 func (c *ProjectsLocationsServicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14441,7 +14441,7 @@
 
 func (c *ProjectsLocationsServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14597,7 +14597,7 @@
 
 func (c *ProjectsLocationsServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14762,7 +14762,7 @@
 
 func (c *ProjectsLocationsServicesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14967,7 +14967,7 @@
 
 func (c *ProjectsLocationsServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15147,7 +15147,7 @@
 
 func (c *ProjectsLocationsServicesReplaceServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15289,7 +15289,7 @@
 
 func (c *ProjectsLocationsServicesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15432,7 +15432,7 @@
 
 func (c *ProjectsLocationsServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/run/v1alpha1/run-gen.go b/run/v1alpha1/run-gen.go
index 0025841..83363cb 100644
--- a/run/v1alpha1/run-gen.go
+++ b/run/v1alpha1/run-gen.go
@@ -6177,7 +6177,7 @@
 
 func (c *NamespacesAuthorizeddomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6353,7 +6353,7 @@
 
 func (c *NamespacesConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6552,7 +6552,7 @@
 
 func (c *NamespacesConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6723,7 +6723,7 @@
 
 func (c *NamespacesDomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6902,7 +6902,7 @@
 
 func (c *NamespacesDomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7063,7 +7063,7 @@
 
 func (c *NamespacesDomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7262,7 +7262,7 @@
 
 func (c *NamespacesDomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7442,7 +7442,7 @@
 
 func (c *NamespacesEventtypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7641,7 +7641,7 @@
 
 func (c *NamespacesEventtypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7812,7 +7812,7 @@
 
 func (c *NamespacesPubsubsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7977,7 +7977,7 @@
 
 func (c *NamespacesPubsubsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8133,7 +8133,7 @@
 
 func (c *NamespacesPubsubsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8332,7 +8332,7 @@
 
 func (c *NamespacesPubsubsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8512,7 +8512,7 @@
 
 func (c *NamespacesPubsubsReplacePubSubCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8691,7 +8691,7 @@
 
 func (c *NamespacesRevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8852,7 +8852,7 @@
 
 func (c *NamespacesRevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9051,7 +9051,7 @@
 
 func (c *NamespacesRevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9231,7 +9231,7 @@
 
 func (c *NamespacesRoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9430,7 +9430,7 @@
 
 func (c *NamespacesRoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9601,7 +9601,7 @@
 
 func (c *NamespacesServicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9783,7 +9783,7 @@
 
 func (c *NamespacesServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9944,7 +9944,7 @@
 
 func (c *NamespacesServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10143,7 +10143,7 @@
 
 func (c *NamespacesServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10323,7 +10323,7 @@
 
 func (c *NamespacesServicesReplaceServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10463,7 +10463,7 @@
 
 func (c *NamespacesTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10628,7 +10628,7 @@
 
 func (c *NamespacesTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10784,7 +10784,7 @@
 
 func (c *NamespacesTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10983,7 +10983,7 @@
 
 func (c *NamespacesTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11163,7 +11163,7 @@
 
 func (c *NamespacesTriggersReplaceTriggerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11334,7 +11334,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11529,7 +11529,7 @@
 
 func (c *ProjectsLocationsAuthorizeddomainsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11705,7 +11705,7 @@
 
 func (c *ProjectsLocationsConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11904,7 +11904,7 @@
 
 func (c *ProjectsLocationsConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12075,7 +12075,7 @@
 
 func (c *ProjectsLocationsDomainmappingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12254,7 +12254,7 @@
 
 func (c *ProjectsLocationsDomainmappingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12415,7 +12415,7 @@
 
 func (c *ProjectsLocationsDomainmappingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12614,7 +12614,7 @@
 
 func (c *ProjectsLocationsDomainmappingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12794,7 +12794,7 @@
 
 func (c *ProjectsLocationsEventtypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12993,7 +12993,7 @@
 
 func (c *ProjectsLocationsEventtypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13164,7 +13164,7 @@
 
 func (c *ProjectsLocationsPubsubsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13329,7 +13329,7 @@
 
 func (c *ProjectsLocationsPubsubsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13485,7 +13485,7 @@
 
 func (c *ProjectsLocationsPubsubsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13684,7 +13684,7 @@
 
 func (c *ProjectsLocationsPubsubsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13864,7 +13864,7 @@
 
 func (c *ProjectsLocationsPubsubsReplacePubSubCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14043,7 +14043,7 @@
 
 func (c *ProjectsLocationsRevisionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14204,7 +14204,7 @@
 
 func (c *ProjectsLocationsRevisionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14403,7 +14403,7 @@
 
 func (c *ProjectsLocationsRevisionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14583,7 +14583,7 @@
 
 func (c *ProjectsLocationsRoutesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14782,7 +14782,7 @@
 
 func (c *ProjectsLocationsRoutesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14953,7 +14953,7 @@
 
 func (c *ProjectsLocationsServicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15135,7 +15135,7 @@
 
 func (c *ProjectsLocationsServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15296,7 +15296,7 @@
 
 func (c *ProjectsLocationsServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15461,7 +15461,7 @@
 
 func (c *ProjectsLocationsServicesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15666,7 +15666,7 @@
 
 func (c *ProjectsLocationsServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15846,7 +15846,7 @@
 
 func (c *ProjectsLocationsServicesReplaceServiceCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15988,7 +15988,7 @@
 
 func (c *ProjectsLocationsServicesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16131,7 +16131,7 @@
 
 func (c *ProjectsLocationsServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16271,7 +16271,7 @@
 
 func (c *ProjectsLocationsTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16436,7 +16436,7 @@
 
 func (c *ProjectsLocationsTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16592,7 +16592,7 @@
 
 func (c *ProjectsLocationsTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16791,7 +16791,7 @@
 
 func (c *ProjectsLocationsTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16971,7 +16971,7 @@
 
 func (c *ProjectsLocationsTriggersReplaceTriggerCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/run/v1beta1/run-gen.go b/run/v1beta1/run-gen.go
index 4beac25..287d0c6 100644
--- a/run/v1beta1/run-gen.go
+++ b/run/v1beta1/run-gen.go
@@ -1477,7 +1477,7 @@
 
 func (c *CustomresourcedefinitionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1647,7 +1647,7 @@
 
 func (c *NamespacesCustomresourcedefinitionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1788,7 +1788,7 @@
 
 func (c *ProjectsLocationsCustomresourcedefinitionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1983,7 +1983,7 @@
 
 func (c *ProjectsLocationsCustomresourcedefinitionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/runtimeconfig/v1/runtimeconfig-gen.go b/runtimeconfig/v1/runtimeconfig-gen.go
index 0f1d2b9..6db3567 100644
--- a/runtimeconfig/v1/runtimeconfig-gen.go
+++ b/runtimeconfig/v1/runtimeconfig-gen.go
@@ -394,7 +394,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -539,7 +539,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -718,7 +718,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/runtimeconfig/v1beta1/runtimeconfig-gen.go b/runtimeconfig/v1beta1/runtimeconfig-gen.go
index 50e7921..5c4fd89 100644
--- a/runtimeconfig/v1beta1/runtimeconfig-gen.go
+++ b/runtimeconfig/v1beta1/runtimeconfig-gen.go
@@ -1315,7 +1315,7 @@
 
 func (c *ProjectsConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1459,7 +1459,7 @@
 
 func (c *ProjectsConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1601,7 +1601,7 @@
 
 func (c *ProjectsConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1767,7 +1767,7 @@
 
 func (c *ProjectsConfigsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1934,7 +1934,7 @@
 
 func (c *ProjectsConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2107,7 +2107,7 @@
 
 func (c *ProjectsConfigsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2258,7 +2258,7 @@
 
 func (c *ProjectsConfigsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2400,7 +2400,7 @@
 
 func (c *ProjectsConfigsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2554,7 +2554,7 @@
 
 func (c *ProjectsConfigsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2700,7 +2700,7 @@
 
 func (c *ProjectsConfigsOperationsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2869,7 +2869,7 @@
 
 func (c *ProjectsConfigsVariablesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3029,7 +3029,7 @@
 
 func (c *ProjectsConfigsVariablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3176,7 +3176,7 @@
 
 func (c *ProjectsConfigsVariablesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3364,7 +3364,7 @@
 
 func (c *ProjectsConfigsVariablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3552,7 +3552,7 @@
 
 func (c *ProjectsConfigsVariablesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3693,7 +3693,7 @@
 
 func (c *ProjectsConfigsVariablesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3855,7 +3855,7 @@
 
 func (c *ProjectsConfigsVariablesWatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4022,7 +4022,7 @@
 
 func (c *ProjectsConfigsWaitersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4166,7 +4166,7 @@
 
 func (c *ProjectsConfigsWaitersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4308,7 +4308,7 @@
 
 func (c *ProjectsConfigsWaitersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4469,7 +4469,7 @@
 
 func (c *ProjectsConfigsWaitersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4647,7 +4647,7 @@
 
 func (c *ProjectsConfigsWaitersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/safebrowsing/v4/safebrowsing-gen.go b/safebrowsing/v4/safebrowsing-gen.go
index cd98d85..96615e9 100644
--- a/safebrowsing/v4/safebrowsing-gen.go
+++ b/safebrowsing/v4/safebrowsing-gen.go
@@ -1605,7 +1605,7 @@
 
 func (c *EncodedFullHashesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1771,7 +1771,7 @@
 
 func (c *EncodedUpdatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1911,7 +1911,7 @@
 
 func (c *FullHashesFindCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2035,7 +2035,7 @@
 
 func (c *ThreatHitsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2159,7 +2159,7 @@
 
 func (c *ThreatListUpdatesFetchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2290,7 +2290,7 @@
 
 func (c *ThreatListsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2407,7 +2407,7 @@
 
 func (c *ThreatMatchesFindCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/script/v1/script-gen.go b/script/v1/script-gen.go
index a114dd5..6bdb824 100644
--- a/script/v1/script-gen.go
+++ b/script/v1/script-gen.go
@@ -2000,7 +2000,7 @@
 
 func (c *ProcessesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2361,7 +2361,7 @@
 
 func (c *ProcessesListScriptProcessesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2591,7 +2591,7 @@
 
 func (c *ProjectsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2727,7 +2727,7 @@
 
 func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2882,7 +2882,7 @@
 
 func (c *ProjectsGetContentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3054,7 +3054,7 @@
 
 func (c *ProjectsGetMetricsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3211,7 +3211,7 @@
 
 func (c *ProjectsUpdateContentCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3350,7 +3350,7 @@
 
 func (c *ProjectsDeploymentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3489,7 +3489,7 @@
 
 func (c *ProjectsDeploymentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3639,7 +3639,7 @@
 
 func (c *ProjectsDeploymentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3807,7 +3807,7 @@
 
 func (c *ProjectsDeploymentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3976,7 +3976,7 @@
 
 func (c *ProjectsDeploymentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4125,7 +4125,7 @@
 
 func (c *ProjectsVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4275,7 +4275,7 @@
 
 func (c *ProjectsVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4444,7 +4444,7 @@
 
 func (c *ProjectsVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4635,7 +4635,7 @@
 
 func (c *ScriptsRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/searchconsole/v1/searchconsole-gen.go b/searchconsole/v1/searchconsole-gen.go
index 20f62b0..1084efc 100644
--- a/searchconsole/v1/searchconsole-gen.go
+++ b/searchconsole/v1/searchconsole-gen.go
@@ -468,7 +468,7 @@
 
 func (c *UrlTestingToolsMobileFriendlyTestRunCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/securitycenter/v1/securitycenter-gen.go b/securitycenter/v1/securitycenter-gen.go
index 2719723..506d326 100644
--- a/securitycenter/v1/securitycenter-gen.go
+++ b/securitycenter/v1/securitycenter-gen.go
@@ -2326,7 +2326,7 @@
 
 func (c *OrganizationsGetOrganizationSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2470,7 +2470,7 @@
 
 func (c *OrganizationsUpdateOrganizationSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2618,7 +2618,7 @@
 
 func (c *OrganizationsAssetsGroupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2967,7 +2967,7 @@
 
 func (c *OrganizationsAssetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3170,7 +3170,7 @@
 
 func (c *OrganizationsAssetsRunDiscoveryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3332,7 +3332,7 @@
 
 func (c *OrganizationsAssetsUpdateSecurityMarksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3499,7 +3499,7 @@
 
 func (c *OrganizationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3635,7 +3635,7 @@
 
 func (c *OrganizationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3780,7 +3780,7 @@
 
 func (c *OrganizationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3961,7 +3961,7 @@
 
 func (c *OrganizationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4133,7 +4133,7 @@
 
 func (c *OrganizationsSourcesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4282,7 +4282,7 @@
 
 func (c *OrganizationsSourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4417,7 +4417,7 @@
 
 func (c *OrganizationsSourcesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4583,7 +4583,7 @@
 
 func (c *OrganizationsSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4759,7 +4759,7 @@
 
 func (c *OrganizationsSourcesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4905,7 +4905,7 @@
 
 func (c *OrganizationsSourcesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5046,7 +5046,7 @@
 
 func (c *OrganizationsSourcesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5198,7 +5198,7 @@
 
 func (c *OrganizationsSourcesFindingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5348,7 +5348,7 @@
 
 func (c *OrganizationsSourcesFindingsGroupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5690,7 +5690,7 @@
 
 func (c *OrganizationsSourcesFindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5903,7 +5903,7 @@
 
 func (c *OrganizationsSourcesFindingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6049,7 +6049,7 @@
 
 func (c *OrganizationsSourcesFindingsSetStateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6211,7 +6211,7 @@
 
 func (c *OrganizationsSourcesFindingsUpdateSecurityMarksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/securitycenter/v1beta1/securitycenter-gen.go b/securitycenter/v1beta1/securitycenter-gen.go
index a2bebcf..8fd0d5c 100644
--- a/securitycenter/v1beta1/securitycenter-gen.go
+++ b/securitycenter/v1beta1/securitycenter-gen.go
@@ -2129,7 +2129,7 @@
 
 func (c *OrganizationsGetOrganizationSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2271,7 +2271,7 @@
 
 func (c *OrganizationsUpdateOrganizationSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2419,7 +2419,7 @@
 
 func (c *OrganizationsAssetsGroupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2721,7 +2721,7 @@
 
 func (c *OrganizationsAssetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2924,7 +2924,7 @@
 
 func (c *OrganizationsAssetsRunDiscoveryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3078,7 +3078,7 @@
 
 func (c *OrganizationsAssetsUpdateSecurityMarksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3247,7 +3247,7 @@
 
 func (c *OrganizationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3391,7 +3391,7 @@
 
 func (c *OrganizationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3536,7 +3536,7 @@
 
 func (c *OrganizationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3717,7 +3717,7 @@
 
 func (c *OrganizationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3889,7 +3889,7 @@
 
 func (c *OrganizationsSourcesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4038,7 +4038,7 @@
 
 func (c *OrganizationsSourcesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4173,7 +4173,7 @@
 
 func (c *OrganizationsSourcesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4339,7 +4339,7 @@
 
 func (c *OrganizationsSourcesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4513,7 +4513,7 @@
 
 func (c *OrganizationsSourcesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4659,7 +4659,7 @@
 
 func (c *OrganizationsSourcesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4800,7 +4800,7 @@
 
 func (c *OrganizationsSourcesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4952,7 +4952,7 @@
 
 func (c *OrganizationsSourcesFindingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5102,7 +5102,7 @@
 
 func (c *OrganizationsSourcesFindingsGroupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5366,7 +5366,7 @@
 
 func (c *OrganizationsSourcesFindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5565,7 +5565,7 @@
 
 func (c *OrganizationsSourcesFindingsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5711,7 +5711,7 @@
 
 func (c *OrganizationsSourcesFindingsSetStateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5865,7 +5865,7 @@
 
 func (c *OrganizationsSourcesFindingsUpdateSecurityMarksCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/securitycenter/v1p1alpha1/securitycenter-gen.go b/securitycenter/v1p1alpha1/securitycenter-gen.go
index 608655a..8bbe035 100644
--- a/securitycenter/v1p1alpha1/securitycenter-gen.go
+++ b/securitycenter/v1p1alpha1/securitycenter-gen.go
@@ -475,7 +475,7 @@
 
 func (c *OrganizationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -611,7 +611,7 @@
 
 func (c *OrganizationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -756,7 +756,7 @@
 
 func (c *OrganizationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -937,7 +937,7 @@
 
 func (c *OrganizationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicebroker/v1/servicebroker-gen.go b/servicebroker/v1/servicebroker-gen.go
index c8cffab..721376a 100644
--- a/servicebroker/v1/servicebroker-gen.go
+++ b/servicebroker/v1/servicebroker-gen.go
@@ -590,7 +590,7 @@
 
 func (c *V1GetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -736,7 +736,7 @@
 
 func (c *V1SetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -886,7 +886,7 @@
 
 func (c *V1TestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicebroker/v1alpha1/servicebroker-gen.go b/servicebroker/v1alpha1/servicebroker-gen.go
index 1c89bcd..cca92a5 100644
--- a/servicebroker/v1alpha1/servicebroker-gen.go
+++ b/servicebroker/v1alpha1/servicebroker-gen.go
@@ -1478,7 +1478,7 @@
 
 func (c *ProjectsBrokersInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1641,7 +1641,7 @@
 
 func (c *ProjectsBrokersInstancesServiceBindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1839,7 +1839,7 @@
 
 func (c *ProjectsBrokersServiceInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2039,7 +2039,7 @@
 
 func (c *ProjectsBrokersV2CatalogListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2245,7 +2245,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2427,7 +2427,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2597,7 +2597,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2767,7 +2767,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2938,7 +2938,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3108,7 +3108,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3302,7 +3302,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3493,7 +3493,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3693,7 +3693,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3893,7 +3893,7 @@
 
 func (c *V1alpha1GetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4039,7 +4039,7 @@
 
 func (c *V1alpha1SetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4189,7 +4189,7 @@
 
 func (c *V1alpha1TestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicebroker/v1beta1/servicebroker-gen.go b/servicebroker/v1beta1/servicebroker-gen.go
index cbf1db0..4792112 100644
--- a/servicebroker/v1beta1/servicebroker-gen.go
+++ b/servicebroker/v1beta1/servicebroker-gen.go
@@ -1601,7 +1601,7 @@
 
 func (c *ProjectsBrokersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1740,7 +1740,7 @@
 
 func (c *ProjectsBrokersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1898,7 +1898,7 @@
 
 func (c *ProjectsBrokersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2082,7 +2082,7 @@
 
 func (c *ProjectsBrokersInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2250,7 +2250,7 @@
 
 func (c *ProjectsBrokersInstancesGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2430,7 +2430,7 @@
 
 func (c *ProjectsBrokersInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2631,7 +2631,7 @@
 
 func (c *ProjectsBrokersInstancesBindingsGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2809,7 +2809,7 @@
 
 func (c *ProjectsBrokersInstancesBindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3008,7 +3008,7 @@
 
 func (c *ProjectsBrokersV2CatalogListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3214,7 +3214,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3394,7 +3394,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3559,7 +3559,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3727,7 +3727,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3887,7 +3887,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4046,7 +4046,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4227,7 +4227,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4398,7 +4398,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4576,7 +4576,7 @@
 
 func (c *ProjectsBrokersV2ServiceInstancesServiceBindingsGetLastOperationCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4758,7 +4758,7 @@
 
 func (c *V1beta1GetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4904,7 +4904,7 @@
 
 func (c *V1beta1SetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5054,7 +5054,7 @@
 
 func (c *V1beta1TestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index 36fc8e0..68d2673 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -5272,7 +5272,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5416,7 +5416,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5561,7 +5561,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5742,7 +5742,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5973,7 +5973,7 @@
 
 func (c *ServicesSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6153,7 +6153,7 @@
 
 func (c *ServicesTenancyUnitsAddProjectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6319,7 +6319,7 @@
 
 func (c *ServicesTenancyUnitsApplyProjectConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6476,7 +6476,7 @@
 
 func (c *ServicesTenancyUnitsAttachProjectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6622,7 +6622,7 @@
 
 func (c *ServicesTenancyUnitsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6764,7 +6764,7 @@
 
 func (c *ServicesTenancyUnitsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6911,7 +6911,7 @@
 
 func (c *ServicesTenancyUnitsDeleteProjectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7092,7 +7092,7 @@
 
 func (c *ServicesTenancyUnitsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7277,7 +7277,7 @@
 
 func (c *ServicesTenancyUnitsRemoveProjectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7426,7 +7426,7 @@
 
 func (c *ServicesTenancyUnitsUndeleteProjectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index 5cfc3d2..4c8c615 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -196,7 +196,7 @@
       }
     }
   },
-  "revision": "20191003",
+  "revision": "20191027",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -1168,10 +1168,6 @@
           "$ref": "QuotaProperties",
           "description": "Represents the properties needed for quota check. Applicable only if this\noperation is for a quota check request. If this is not specified, no quota\ncheck will be performed."
         },
-        "resourceContainer": {
-          "description": "DO NOT USE. This field is deprecated, use \"resources\" field instead.\nThe resource name of the parent of a resource in the resource hierarchy.\n\nThis can be in one of the following formats:\n    - “projects/\u003cproject-id or project-number\u003e”\n    - “folders/\u003cfolder-id\u003e”\n    - “organizations/\u003corganization-id\u003e”",
-          "type": "string"
-        },
         "resources": {
           "description": "The resources that are involved in the operation.\nThe maximum supported number of entries in this field is 100.",
           "items": {
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index b656b2a..bee8b33 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -1912,17 +1912,6 @@
 	// check will be performed.
 	QuotaProperties *QuotaProperties `json:"quotaProperties,omitempty"`
 
-	// ResourceContainer: DO NOT USE. This field is deprecated, use
-	// "resources" field instead.
-	// The resource name of the parent of a resource in the resource
-	// hierarchy.
-	//
-	// This can be in one of the following formats:
-	//     - “projects/<project-id or project-number>”
-	//     - “folders/<folder-id>”
-	//     - “organizations/<organization-id>”
-	ResourceContainer string `json:"resourceContainer,omitempty"`
-
 	// Resources: The resources that are involved in the operation.
 	// The maximum supported number of entries in this field is 100.
 	Resources []*ResourceInfo `json:"resources,omitempty"`
@@ -3034,7 +3023,7 @@
 
 func (c *ServicesAllocateQuotaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3196,7 +3185,7 @@
 
 func (c *ServicesCheckCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3355,7 +3344,7 @@
 
 func (c *ServicesReportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicemanagement/v1/servicemanagement-gen.go b/servicemanagement/v1/servicemanagement-gen.go
index eef6ff9..2b9504f 100644
--- a/servicemanagement/v1/servicemanagement-gen.go
+++ b/servicemanagement/v1/servicemanagement-gen.go
@@ -5880,7 +5880,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6076,7 +6076,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6244,7 +6244,7 @@
 
 func (c *ServicesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6378,7 +6378,7 @@
 
 func (c *ServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6515,7 +6515,7 @@
 
 func (c *ServicesDisableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6661,7 +6661,7 @@
 
 func (c *ServicesEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6816,7 +6816,7 @@
 
 func (c *ServicesGenerateConfigReportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6955,7 +6955,7 @@
 
 func (c *ServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7125,7 +7125,7 @@
 
 func (c *ServicesGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7279,7 +7279,7 @@
 
 func (c *ServicesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7476,7 +7476,7 @@
 
 func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7649,7 +7649,7 @@
 
 func (c *ServicesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7800,7 +7800,7 @@
 
 func (c *ServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7949,7 +7949,7 @@
 
 func (c *ServicesUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8093,7 +8093,7 @@
 
 func (c *ServicesConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8256,7 +8256,7 @@
 
 func (c *ServicesConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8436,7 +8436,7 @@
 
 func (c *ServicesConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8623,7 +8623,7 @@
 
 func (c *ServicesConfigsSubmitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8766,7 +8766,7 @@
 
 func (c *ServicesConsumersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8914,7 +8914,7 @@
 
 func (c *ServicesConsumersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9065,7 +9065,7 @@
 
 func (c *ServicesConsumersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9246,7 +9246,7 @@
 
 func (c *ServicesRolloutsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9402,7 +9402,7 @@
 
 func (c *ServicesRolloutsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9589,7 +9589,7 @@
 
 func (c *ServicesRolloutsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicenetworking/v1/servicenetworking-gen.go b/servicenetworking/v1/servicenetworking-gen.go
index 352fa92..795bd1d 100644
--- a/servicenetworking/v1/servicenetworking-gen.go
+++ b/servicenetworking/v1/servicenetworking-gen.go
@@ -4598,7 +4598,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4743,7 +4743,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4889,7 +4889,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5071,7 +5071,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5260,7 +5260,7 @@
 
 func (c *ServicesAddSubnetworkCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5412,7 +5412,7 @@
 
 func (c *ServicesSearchRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5569,7 +5569,7 @@
 
 func (c *ServicesConnectionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5738,7 +5738,7 @@
 
 func (c *ServicesConnectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5899,7 +5899,7 @@
 
 func (c *ServicesConnectionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/servicenetworking/v1beta/servicenetworking-gen.go b/servicenetworking/v1beta/servicenetworking-gen.go
index 49e1375..f6060a7 100644
--- a/servicenetworking/v1beta/servicenetworking-gen.go
+++ b/servicenetworking/v1beta/servicenetworking-gen.go
@@ -4529,7 +4529,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4681,7 +4681,7 @@
 
 func (c *ServicesAddSubnetworkCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4833,7 +4833,7 @@
 
 func (c *ServicesSearchRangeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4994,7 +4994,7 @@
 
 func (c *ServicesUpdateConnectionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5162,7 +5162,7 @@
 
 func (c *ServicesConnectionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5331,7 +5331,7 @@
 
 func (c *ServicesConnectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/serviceusage/v1/serviceusage-gen.go b/serviceusage/v1/serviceusage-gen.go
index 34a51c9..f45bde0 100644
--- a/serviceusage/v1/serviceusage-gen.go
+++ b/serviceusage/v1/serviceusage-gen.go
@@ -4969,7 +4969,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5114,7 +5114,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5260,7 +5260,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5447,7 +5447,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5617,7 +5617,7 @@
 
 func (c *ServicesBatchEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5768,7 +5768,7 @@
 
 func (c *ServicesDisableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5909,7 +5909,7 @@
 
 func (c *ServicesEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6060,7 +6060,7 @@
 
 func (c *ServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6241,7 +6241,7 @@
 
 func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/serviceusage/v1beta1/serviceusage-gen.go b/serviceusage/v1beta1/serviceusage-gen.go
index 63838ff..06b9b73 100644
--- a/serviceusage/v1beta1/serviceusage-gen.go
+++ b/serviceusage/v1beta1/serviceusage-gen.go
@@ -5047,7 +5047,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5234,7 +5234,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5405,7 +5405,7 @@
 
 func (c *ServicesBatchEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5558,7 +5558,7 @@
 
 func (c *ServicesDisableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5702,7 +5702,7 @@
 
 func (c *ServicesEnableCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5853,7 +5853,7 @@
 
 func (c *ServicesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6034,7 +6034,7 @@
 
 func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/sheets/v4/sheets-gen.go b/sheets/v4/sheets-gen.go
index 7b01545..52b1edd 100644
--- a/sheets/v4/sheets-gen.go
+++ b/sheets/v4/sheets-gen.go
@@ -10142,7 +10142,7 @@
 
 func (c *SpreadsheetsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10282,7 +10282,7 @@
 
 func (c *SpreadsheetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10459,7 +10459,7 @@
 
 func (c *SpreadsheetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10635,7 +10635,7 @@
 
 func (c *SpreadsheetsGetByDataFilterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10790,7 +10790,7 @@
 
 func (c *SpreadsheetsDeveloperMetadataGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10944,7 +10944,7 @@
 
 func (c *SpreadsheetsDeveloperMetadataSearchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11089,7 +11089,7 @@
 
 func (c *SpreadsheetsSheetsCopyToCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11325,7 +11325,7 @@
 
 func (c *SpreadsheetsValuesAppendCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11523,7 +11523,7 @@
 
 func (c *SpreadsheetsValuesBatchClearCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11671,7 +11671,7 @@
 
 func (c *SpreadsheetsValuesBatchClearByDataFilterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11880,7 +11880,7 @@
 
 func (c *SpreadsheetsValuesBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12058,7 +12058,7 @@
 
 func (c *SpreadsheetsValuesBatchGetByDataFilterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12203,7 +12203,7 @@
 
 func (c *SpreadsheetsValuesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12348,7 +12348,7 @@
 
 func (c *SpreadsheetsValuesBatchUpdateByDataFilterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12496,7 +12496,7 @@
 
 func (c *SpreadsheetsValuesClearCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12706,7 +12706,7 @@
 
 func (c *SpreadsheetsValuesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12944,7 +12944,7 @@
 
 func (c *SpreadsheetsValuesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/siteverification/v1/siteverification-gen.go b/siteverification/v1/siteverification-gen.go
index c8be652..e5454b8 100644
--- a/siteverification/v1/siteverification-gen.go
+++ b/siteverification/v1/siteverification-gen.go
@@ -403,7 +403,7 @@
 
 func (c *WebResourceDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -514,7 +514,7 @@
 
 func (c *WebResourceGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -647,7 +647,7 @@
 
 func (c *WebResourceGetTokenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -773,7 +773,7 @@
 
 func (c *WebResourceInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -917,7 +917,7 @@
 
 func (c *WebResourceListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1038,7 +1038,7 @@
 
 func (c *WebResourcePatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1177,7 +1177,7 @@
 
 func (c *WebResourceUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/slides/v1/slides-gen.go b/slides/v1/slides-gen.go
index b82248c..57896fa 100644
--- a/slides/v1/slides-gen.go
+++ b/slides/v1/slides-gen.go
@@ -8135,7 +8135,7 @@
 
 func (c *PresentationsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8284,7 +8284,7 @@
 
 func (c *PresentationsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8422,7 +8422,7 @@
 
 func (c *PresentationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8573,7 +8573,7 @@
 
 func (c *PresentationsPagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8768,7 +8768,7 @@
 
 func (c *PresentationsPagesGetThumbnailCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/sourcerepo/v1/sourcerepo-gen.go b/sourcerepo/v1/sourcerepo-gen.go
index 509df46..718214a 100644
--- a/sourcerepo/v1/sourcerepo-gen.go
+++ b/sourcerepo/v1/sourcerepo-gen.go
@@ -1221,7 +1221,7 @@
 
 func (c *ProjectsGetConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1357,7 +1357,7 @@
 
 func (c *ProjectsUpdateConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1501,7 +1501,7 @@
 
 func (c *ProjectsReposCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1640,7 +1640,7 @@
 
 func (c *ProjectsReposDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1782,7 +1782,7 @@
 
 func (c *ProjectsReposGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1932,7 +1932,7 @@
 
 func (c *ProjectsReposGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2098,7 +2098,7 @@
 
 func (c *ProjectsReposListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2268,7 +2268,7 @@
 
 func (c *ProjectsReposPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2410,7 +2410,7 @@
 
 func (c *ProjectsReposSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2553,7 +2553,7 @@
 
 func (c *ProjectsReposSyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2697,7 +2697,7 @@
 
 func (c *ProjectsReposTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/spanner/v1/spanner-gen.go b/spanner/v1/spanner-gen.go
index b7ba587..fdabb1d 100644
--- a/spanner/v1/spanner-gen.go
+++ b/spanner/v1/spanner-gen.go
@@ -4315,7 +4315,7 @@
 
 func (c *ProjectsInstanceConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4478,7 +4478,7 @@
 
 func (c *ProjectsInstanceConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4686,7 +4686,7 @@
 
 func (c *ProjectsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4836,7 +4836,7 @@
 
 func (c *ProjectsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4978,7 +4978,7 @@
 
 func (c *ProjectsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5120,7 +5120,7 @@
 
 func (c *ProjectsInstancesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5315,7 +5315,7 @@
 
 func (c *ProjectsInstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5536,7 +5536,7 @@
 
 func (c *ProjectsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5682,7 +5682,7 @@
 
 func (c *ProjectsInstancesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5832,7 +5832,7 @@
 
 func (c *ProjectsInstancesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5982,7 +5982,7 @@
 
 func (c *ProjectsInstancesDatabasesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6121,7 +6121,7 @@
 
 func (c *ProjectsInstancesDatabasesDropDatabaseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6263,7 +6263,7 @@
 
 func (c *ProjectsInstancesDatabasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6412,7 +6412,7 @@
 
 func (c *ProjectsInstancesDatabasesGetDdlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6555,7 +6555,7 @@
 
 func (c *ProjectsInstancesDatabasesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6722,7 +6722,7 @@
 
 func (c *ProjectsInstancesDatabasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6895,7 +6895,7 @@
 
 func (c *ProjectsInstancesDatabasesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7043,7 +7043,7 @@
 
 func (c *ProjectsInstancesDatabasesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7193,7 +7193,7 @@
 
 func (c *ProjectsInstancesDatabasesUpdateDdlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7349,7 +7349,7 @@
 
 func (c *ProjectsInstancesDatabasesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7486,7 +7486,7 @@
 
 func (c *ProjectsInstancesDatabasesOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7632,7 +7632,7 @@
 
 func (c *ProjectsInstancesDatabasesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7814,7 +7814,7 @@
 
 func (c *ProjectsInstancesDatabasesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7992,7 +7992,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8137,7 +8137,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsBeginTransactionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8289,7 +8289,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsCommitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8459,7 +8459,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8602,7 +8602,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8751,7 +8751,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsExecuteBatchDmlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8905,7 +8905,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsExecuteSqlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9051,7 +9051,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsExecuteStreamingSqlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9205,7 +9205,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9384,7 +9384,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9575,7 +9575,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsPartitionQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9738,7 +9738,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsPartitionReadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9894,7 +9894,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsReadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10044,7 +10044,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsRollbackCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10189,7 +10189,7 @@
 
 func (c *ProjectsInstancesDatabasesSessionsStreamingReadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10345,7 +10345,7 @@
 
 func (c *ProjectsInstancesOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10482,7 +10482,7 @@
 
 func (c *ProjectsInstancesOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10628,7 +10628,7 @@
 
 func (c *ProjectsInstancesOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10810,7 +10810,7 @@
 
 func (c *ProjectsInstancesOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/speech/v1/speech-gen.go b/speech/v1/speech-gen.go
index 2c80529..3c73eaa 100644
--- a/speech/v1/speech-gen.go
+++ b/speech/v1/speech-gen.go
@@ -1298,7 +1298,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1484,7 +1484,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1662,7 +1662,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1843,7 +1843,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2022,7 +2022,7 @@
 
 func (c *SpeechLongrunningrecognizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2149,7 +2149,7 @@
 
 func (c *SpeechRecognizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/speech/v1p1beta1/speech-gen.go b/speech/v1p1beta1/speech-gen.go
index 259a1a5..3c8e95e 100644
--- a/speech/v1p1beta1/speech-gen.go
+++ b/speech/v1p1beta1/speech-gen.go
@@ -1420,7 +1420,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1606,7 +1606,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1784,7 +1784,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1965,7 +1965,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2144,7 +2144,7 @@
 
 func (c *SpeechLongrunningrecognizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2271,7 +2271,7 @@
 
 func (c *SpeechRecognizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/speech/v2beta1/speech-gen.go b/speech/v2beta1/speech-gen.go
index 812b413..d7bc04c 100644
--- a/speech/v2beta1/speech-gen.go
+++ b/speech/v2beta1/speech-gen.go
@@ -673,7 +673,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -854,7 +854,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/sql/v1beta4/sql-gen.go b/sql/v1beta4/sql-gen.go
index 50aecb7..53e613b 100644
--- a/sql/v1beta4/sql-gen.go
+++ b/sql/v1beta4/sql-gen.go
@@ -3626,7 +3626,7 @@
 
 func (c *BackupRunsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3799,7 +3799,7 @@
 
 func (c *BackupRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3968,7 +3968,7 @@
 
 func (c *BackupRunsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4158,7 +4158,7 @@
 
 func (c *BackupRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4340,7 +4340,7 @@
 
 func (c *DatabasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4514,7 +4514,7 @@
 
 func (c *DatabasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4682,7 +4682,7 @@
 
 func (c *DatabasesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4854,7 +4854,7 @@
 
 func (c *DatabasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5008,7 +5008,7 @@
 
 func (c *DatabasesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5170,7 +5170,7 @@
 
 func (c *DatabasesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5342,7 +5342,7 @@
 
 func (c *FlagsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5487,7 +5487,7 @@
 
 func (c *InstancesAddServerCaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5643,7 +5643,7 @@
 
 func (c *InstancesCloneCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5796,7 +5796,7 @@
 
 func (c *InstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5948,7 +5948,7 @@
 
 func (c *InstancesDemoteMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6113,7 +6113,7 @@
 
 func (c *InstancesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6277,7 +6277,7 @@
 
 func (c *InstancesFailoverCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6450,7 +6450,7 @@
 
 func (c *InstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6610,7 +6610,7 @@
 
 func (c *InstancesImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6770,7 +6770,7 @@
 
 func (c *InstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6950,7 +6950,7 @@
 
 func (c *InstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7149,7 +7149,7 @@
 
 func (c *InstancesListServerCasCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7300,7 +7300,7 @@
 
 func (c *InstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7457,7 +7457,7 @@
 
 func (c *InstancesPromoteReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7612,7 +7612,7 @@
 
 func (c *InstancesResetSslConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7765,7 +7765,7 @@
 
 func (c *InstancesRestartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7922,7 +7922,7 @@
 
 func (c *InstancesRestoreBackupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8087,7 +8087,7 @@
 
 func (c *InstancesRotateServerCaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8250,7 +8250,7 @@
 
 func (c *InstancesStartReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8405,7 +8405,7 @@
 
 func (c *InstancesStopReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8560,7 +8560,7 @@
 
 func (c *InstancesTruncateLogCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8724,7 +8724,7 @@
 
 func (c *InstancesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8884,7 +8884,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9072,7 +9072,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9265,7 +9265,7 @@
 
 func (c *SslCertsCreateEphemeralCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9422,7 +9422,7 @@
 
 func (c *SslCertsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9598,7 +9598,7 @@
 
 func (c *SslCertsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9768,7 +9768,7 @@
 
 func (c *SslCertsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9940,7 +9940,7 @@
 
 func (c *SslCertsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10101,7 +10101,7 @@
 
 func (c *TiersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10250,7 +10250,7 @@
 
 func (c *UsersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10410,7 +10410,7 @@
 
 func (c *UsersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10582,7 +10582,7 @@
 
 func (c *UsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10747,7 +10747,7 @@
 
 func (c *UsersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/sqladmin/v1beta4/sqladmin-gen.go b/sqladmin/v1beta4/sqladmin-gen.go
index 0e9cadf..d6b797c 100644
--- a/sqladmin/v1beta4/sqladmin-gen.go
+++ b/sqladmin/v1beta4/sqladmin-gen.go
@@ -3025,7 +3025,7 @@
 
 func (c *BackupRunsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3186,7 +3186,7 @@
 
 func (c *BackupRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3340,7 +3340,7 @@
 
 func (c *BackupRunsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3515,7 +3515,7 @@
 
 func (c *BackupRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3691,7 +3691,7 @@
 
 func (c *DatabasesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3852,7 +3852,7 @@
 
 func (c *DatabasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4005,7 +4005,7 @@
 
 func (c *DatabasesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4163,7 +4163,7 @@
 
 func (c *DatabasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4310,7 +4310,7 @@
 
 func (c *DatabasesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4470,7 +4470,7 @@
 
 func (c *DatabasesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4640,7 +4640,7 @@
 
 func (c *FlagsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4771,7 +4771,7 @@
 
 func (c *InstancesAddServerCaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4913,7 +4913,7 @@
 
 func (c *InstancesCloneCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5060,7 +5060,7 @@
 
 func (c *InstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5202,7 +5202,7 @@
 
 func (c *InstancesDemoteMasterCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5352,7 +5352,7 @@
 
 func (c *InstancesExportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5500,7 +5500,7 @@
 
 func (c *InstancesFailoverCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5659,7 +5659,7 @@
 
 func (c *InstancesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5804,7 +5804,7 @@
 
 func (c *InstancesImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5950,7 +5950,7 @@
 
 func (c *InstancesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6121,7 +6121,7 @@
 
 func (c *InstancesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6307,7 +6307,7 @@
 
 func (c *InstancesListServerCasCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6454,7 +6454,7 @@
 
 func (c *InstancesPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6602,7 +6602,7 @@
 
 func (c *InstancesPromoteReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6742,7 +6742,7 @@
 
 func (c *InstancesResetSslConfigCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6881,7 +6881,7 @@
 
 func (c *InstancesRestartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7022,7 +7022,7 @@
 
 func (c *InstancesRestoreBackupCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7173,7 +7173,7 @@
 
 func (c *InstancesRotateServerCaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7320,7 +7320,7 @@
 
 func (c *InstancesStartReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7459,7 +7459,7 @@
 
 func (c *InstancesStopReplicaCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7600,7 +7600,7 @@
 
 func (c *InstancesTruncateLogCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7751,7 +7751,7 @@
 
 func (c *InstancesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7910,7 +7910,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8079,7 +8079,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8257,7 +8257,7 @@
 
 func (c *SslCertsCreateEphemeralCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8407,7 +8407,7 @@
 
 func (c *SslCertsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8569,7 +8569,7 @@
 
 func (c *SslCertsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8723,7 +8723,7 @@
 
 func (c *SslCertsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8881,7 +8881,7 @@
 
 func (c *SslCertsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9033,7 +9033,7 @@
 
 func (c *TiersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9169,7 +9169,7 @@
 
 func (c *UsersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9324,7 +9324,7 @@
 
 func (c *UsersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9482,7 +9482,7 @@
 
 func (c *UsersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9635,7 +9635,7 @@
 
 func (c *UsersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/storage/v1/storage-gen.go b/storage/v1/storage-gen.go
index 04c5409..9e0393c 100644
--- a/storage/v1/storage-gen.go
+++ b/storage/v1/storage-gen.go
@@ -2392,7 +2392,7 @@
 
 func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2540,7 +2540,7 @@
 
 func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2707,7 +2707,7 @@
 
 func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2880,7 +2880,7 @@
 
 func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3041,7 +3041,7 @@
 
 func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3215,7 +3215,7 @@
 
 func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3401,7 +3401,7 @@
 
 func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3580,7 +3580,7 @@
 
 func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3786,7 +3786,7 @@
 
 func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4003,7 +4003,7 @@
 
 func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4260,7 +4260,7 @@
 
 func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4470,7 +4470,7 @@
 
 func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4705,7 +4705,7 @@
 
 func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4934,7 +4934,7 @@
 
 func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5109,7 +5109,7 @@
 
 func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5349,7 +5349,7 @@
 
 func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5561,7 +5561,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5678,7 +5678,7 @@
 
 func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5826,7 +5826,7 @@
 
 func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5994,7 +5994,7 @@
 
 func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6184,7 +6184,7 @@
 
 func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6357,7 +6357,7 @@
 
 func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6531,7 +6531,7 @@
 
 func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6703,7 +6703,7 @@
 
 func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6851,7 +6851,7 @@
 
 func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7021,7 +7021,7 @@
 
 func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7196,7 +7196,7 @@
 
 func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7369,7 +7369,7 @@
 
 func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7541,7 +7541,7 @@
 
 func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7732,7 +7732,7 @@
 
 func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7929,7 +7929,7 @@
 
 func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8114,7 +8114,7 @@
 
 func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8312,7 +8312,7 @@
 
 func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8549,7 +8549,7 @@
 
 func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8881,7 +8881,7 @@
 
 func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9204,7 +9204,7 @@
 
 func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9437,7 +9437,7 @@
 
 func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9687,7 +9687,7 @@
 
 func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10004,7 +10004,7 @@
 
 func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10359,7 +10359,7 @@
 
 func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10666,7 +10666,7 @@
 
 func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11058,7 +11058,7 @@
 
 func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11361,7 +11361,7 @@
 
 func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11561,7 +11561,7 @@
 
 func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11822,7 +11822,7 @@
 
 func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12122,7 +12122,7 @@
 
 func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12328,7 +12328,7 @@
 
 func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12478,7 +12478,7 @@
 
 func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12613,7 +12613,7 @@
 
 func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12813,7 +12813,7 @@
 
 func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13008,7 +13008,7 @@
 
 func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13185,7 +13185,7 @@
 
 func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/storage/v1beta1/storage-gen.go b/storage/v1beta1/storage-gen.go
index 39f793a..c944028 100644
--- a/storage/v1beta1/storage-gen.go
+++ b/storage/v1beta1/storage-gen.go
@@ -824,7 +824,7 @@
 
 func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -946,7 +946,7 @@
 
 func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1087,7 +1087,7 @@
 
 func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1234,7 +1234,7 @@
 
 func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1370,7 +1370,7 @@
 
 func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1518,7 +1518,7 @@
 
 func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1662,7 +1662,7 @@
 
 func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1785,7 +1785,7 @@
 
 func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1944,7 +1944,7 @@
 
 func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2118,7 +2118,7 @@
 
 func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2308,7 +2308,7 @@
 
 func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2471,7 +2471,7 @@
 
 func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2626,7 +2626,7 @@
 
 func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2758,7 +2758,7 @@
 
 func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2909,7 +2909,7 @@
 
 func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3066,7 +3066,7 @@
 
 func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3212,7 +3212,7 @@
 
 func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3370,7 +3370,7 @@
 
 func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3524,7 +3524,7 @@
 
 func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3657,7 +3657,7 @@
 
 func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3890,7 +3890,7 @@
 
 func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4146,7 +4146,7 @@
 
 func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4352,7 +4352,7 @@
 
 func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4525,7 +4525,7 @@
 
 func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/storage/v1beta2/storage-gen.go b/storage/v1beta2/storage-gen.go
index 6db51f6..2ffcc24 100644
--- a/storage/v1beta2/storage-gen.go
+++ b/storage/v1beta2/storage-gen.go
@@ -1282,7 +1282,7 @@
 
 func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1404,7 +1404,7 @@
 
 func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1545,7 +1545,7 @@
 
 func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1692,7 +1692,7 @@
 
 func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1828,7 +1828,7 @@
 
 func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1976,7 +1976,7 @@
 
 func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2138,7 +2138,7 @@
 
 func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2291,7 +2291,7 @@
 
 func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2463,7 +2463,7 @@
 
 func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2646,7 +2646,7 @@
 
 func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2853,7 +2853,7 @@
 
 func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3046,7 +3046,7 @@
 
 func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3208,7 +3208,7 @@
 
 func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3308,7 +3308,7 @@
 
 func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3430,7 +3430,7 @@
 
 func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3572,7 +3572,7 @@
 
 func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3736,7 +3736,7 @@
 
 func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3884,7 +3884,7 @@
 
 func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4032,7 +4032,7 @@
 
 func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4189,7 +4189,7 @@
 
 func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4335,7 +4335,7 @@
 
 func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4500,7 +4500,7 @@
 
 func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4671,7 +4671,7 @@
 
 func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4831,7 +4831,7 @@
 
 func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5003,7 +5003,7 @@
 
 func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5182,7 +5182,7 @@
 
 func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5455,7 +5455,7 @@
 
 func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5745,7 +5745,7 @@
 
 func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5949,7 +5949,7 @@
 
 func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6248,7 +6248,7 @@
 
 func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6535,7 +6535,7 @@
 
 func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6787,7 +6787,7 @@
 
 func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7031,7 +7031,7 @@
 
 func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7290,7 +7290,7 @@
 
 func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/storagetransfer/v1/storagetransfer-gen.go b/storagetransfer/v1/storagetransfer-gen.go
index f105480..164bbec 100644
--- a/storagetransfer/v1/storagetransfer-gen.go
+++ b/storagetransfer/v1/storagetransfer-gen.go
@@ -1628,7 +1628,7 @@
 
 func (c *GoogleServiceAccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1760,7 +1760,7 @@
 
 func (c *TransferJobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1904,7 +1904,7 @@
 
 func (c *TransferJobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2084,7 +2084,7 @@
 
 func (c *TransferJobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2248,7 +2248,7 @@
 
 func (c *TransferJobsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2388,7 +2388,7 @@
 
 func (c *TransferOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2519,7 +2519,7 @@
 
 func (c *TransferOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2664,7 +2664,7 @@
 
 func (c *TransferOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2839,7 +2839,7 @@
 
 func (c *TransferOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3011,7 +3011,7 @@
 
 func (c *TransferOperationsPauseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3151,7 +3151,7 @@
 
 func (c *TransferOperationsResumeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/streetviewpublish/v1/streetviewpublish-gen.go b/streetviewpublish/v1/streetviewpublish-gen.go
index 18f5d48..253853a 100644
--- a/streetviewpublish/v1/streetviewpublish-gen.go
+++ b/streetviewpublish/v1/streetviewpublish-gen.go
@@ -1128,7 +1128,7 @@
 
 func (c *PhotoCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1260,7 +1260,7 @@
 
 func (c *PhotoDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1437,7 +1437,7 @@
 
 func (c *PhotoGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1609,7 +1609,7 @@
 
 func (c *PhotoStartUploadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1790,7 +1790,7 @@
 
 func (c *PhotoUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1951,7 +1951,7 @@
 
 func (c *PhotosBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2139,7 +2139,7 @@
 
 func (c *PhotosBatchGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2318,7 +2318,7 @@
 
 func (c *PhotosBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2517,7 +2517,7 @@
 
 func (c *PhotosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/surveys/v2/surveys-gen.go b/surveys/v2/surveys-gen.go
index 1247503..16a12c6 100644
--- a/surveys/v2/surveys-gen.go
+++ b/surveys/v2/surveys-gen.go
@@ -924,7 +924,7 @@
 
 func (c *ResultsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1077,7 +1077,7 @@
 
 func (c *SurveysDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1217,7 +1217,7 @@
 
 func (c *SurveysGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1350,7 +1350,7 @@
 
 func (c *SurveysInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1500,7 +1500,7 @@
 
 func (c *SurveysListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1637,7 +1637,7 @@
 
 func (c *SurveysStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1773,7 +1773,7 @@
 
 func (c *SurveysStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1904,7 +1904,7 @@
 
 func (c *SurveysUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/tagmanager/v1/tagmanager-gen.go b/tagmanager/v1/tagmanager-gen.go
index e085984..5a71d2e 100644
--- a/tagmanager/v1/tagmanager-gen.go
+++ b/tagmanager/v1/tagmanager-gen.go
@@ -2068,7 +2068,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2210,7 +2210,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2339,7 +2339,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2482,7 +2482,7 @@
 
 func (c *AccountsContainersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2620,7 +2620,7 @@
 
 func (c *AccountsContainersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2741,7 +2741,7 @@
 
 func (c *AccountsContainersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2892,7 +2892,7 @@
 
 func (c *AccountsContainersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3036,7 +3036,7 @@
 
 func (c *AccountsContainersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3189,7 +3189,7 @@
 
 func (c *AccountsContainersEnvironmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3337,7 +3337,7 @@
 
 func (c *AccountsContainersEnvironmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3468,7 +3468,7 @@
 
 func (c *AccountsContainersEnvironmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3629,7 +3629,7 @@
 
 func (c *AccountsContainersEnvironmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3783,7 +3783,7 @@
 
 func (c *AccountsContainersEnvironmentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3944,7 +3944,7 @@
 
 func (c *AccountsContainersFoldersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4092,7 +4092,7 @@
 
 func (c *AccountsContainersFoldersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4223,7 +4223,7 @@
 
 func (c *AccountsContainersFoldersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4384,7 +4384,7 @@
 
 func (c *AccountsContainersFoldersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4537,7 +4537,7 @@
 
 func (c *AccountsContainersFoldersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4709,7 +4709,7 @@
 
 func (c *AccountsContainersFoldersEntitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4884,7 +4884,7 @@
 
 func (c *AccountsContainersMoveFoldersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5032,7 +5032,7 @@
 
 func (c *AccountsContainersReauthorizeEnvironmentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5188,7 +5188,7 @@
 
 func (c *AccountsContainersTagsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5336,7 +5336,7 @@
 
 func (c *AccountsContainersTagsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5467,7 +5467,7 @@
 
 func (c *AccountsContainersTagsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5628,7 +5628,7 @@
 
 func (c *AccountsContainersTagsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5781,7 +5781,7 @@
 
 func (c *AccountsContainersTagsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5942,7 +5942,7 @@
 
 func (c *AccountsContainersTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6090,7 +6090,7 @@
 
 func (c *AccountsContainersTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6221,7 +6221,7 @@
 
 func (c *AccountsContainersTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6382,7 +6382,7 @@
 
 func (c *AccountsContainersTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6536,7 +6536,7 @@
 
 func (c *AccountsContainersTriggersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6697,7 +6697,7 @@
 
 func (c *AccountsContainersVariablesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6845,7 +6845,7 @@
 
 func (c *AccountsContainersVariablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6976,7 +6976,7 @@
 
 func (c *AccountsContainersVariablesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7137,7 +7137,7 @@
 
 func (c *AccountsContainersVariablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7291,7 +7291,7 @@
 
 func (c *AccountsContainersVariablesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7452,7 +7452,7 @@
 
 func (c *AccountsContainersVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7600,7 +7600,7 @@
 
 func (c *AccountsContainersVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7731,7 +7731,7 @@
 
 func (c *AccountsContainersVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7907,7 +7907,7 @@
 
 func (c *AccountsContainersVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8072,7 +8072,7 @@
 
 func (c *AccountsContainersVersionsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8228,7 +8228,7 @@
 
 func (c *AccountsContainersVersionsRestoreCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8376,7 +8376,7 @@
 
 func (c *AccountsContainersVersionsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8534,7 +8534,7 @@
 
 func (c *AccountsContainersVersionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8693,7 +8693,7 @@
 
 func (c *AccountsPermissionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8832,7 +8832,7 @@
 
 func (c *AccountsPermissionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8953,7 +8953,7 @@
 
 func (c *AccountsPermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9104,7 +9104,7 @@
 
 func (c *AccountsPermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9239,7 +9239,7 @@
 
 func (c *AccountsPermissionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/tagmanager/v2/tagmanager-gen.go b/tagmanager/v2/tagmanager-gen.go
index 778ce34..9fda6b5 100644
--- a/tagmanager/v2/tagmanager-gen.go
+++ b/tagmanager/v2/tagmanager-gen.go
@@ -3259,7 +3259,7 @@
 
 func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3408,7 +3408,7 @@
 
 func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3565,7 +3565,7 @@
 
 func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3708,7 +3708,7 @@
 
 func (c *AccountsContainersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3844,7 +3844,7 @@
 
 func (c *AccountsContainersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3955,7 +3955,7 @@
 
 func (c *AccountsContainersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4105,7 +4105,7 @@
 
 func (c *AccountsContainersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4273,7 +4273,7 @@
 
 func (c *AccountsContainersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4416,7 +4416,7 @@
 
 func (c *AccountsContainersEnvironmentsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4552,7 +4552,7 @@
 
 func (c *AccountsContainersEnvironmentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4663,7 +4663,7 @@
 
 func (c *AccountsContainersEnvironmentsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4813,7 +4813,7 @@
 
 func (c *AccountsContainersEnvironmentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4974,7 +4974,7 @@
 
 func (c *AccountsContainersEnvironmentsReauthorizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5120,7 +5120,7 @@
 
 func (c *AccountsContainersEnvironmentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5272,7 +5272,7 @@
 
 func (c *AccountsContainersVersionHeadersLatestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5429,7 +5429,7 @@
 
 func (c *AccountsContainersVersionHeadersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5593,7 +5593,7 @@
 
 func (c *AccountsContainersVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5712,7 +5712,7 @@
 
 func (c *AccountsContainersVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5861,7 +5861,7 @@
 
 func (c *AccountsContainersVersionsLiveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6001,7 +6001,7 @@
 
 func (c *AccountsContainersVersionsPublishCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6135,7 +6135,7 @@
 
 func (c *AccountsContainersVersionsSetLatestCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6263,7 +6263,7 @@
 
 func (c *AccountsContainersVersionsUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6401,7 +6401,7 @@
 
 func (c *AccountsContainersVersionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6544,7 +6544,7 @@
 
 func (c *AccountsContainersWorkspacesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6684,7 +6684,7 @@
 
 func (c *AccountsContainersWorkspacesCreateVersionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6820,7 +6820,7 @@
 
 func (c *AccountsContainersWorkspacesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6931,7 +6931,7 @@
 
 func (c *AccountsContainersWorkspacesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7074,7 +7074,7 @@
 
 func (c *AccountsContainersWorkspacesGetStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7224,7 +7224,7 @@
 
 func (c *AccountsContainersWorkspacesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7383,7 +7383,7 @@
 
 func (c *AccountsContainersWorkspacesQuickPreviewCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7522,7 +7522,7 @@
 
 func (c *AccountsContainersWorkspacesResolveConflictCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7637,7 +7637,7 @@
 
 func (c *AccountsContainersWorkspacesSyncCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7775,7 +7775,7 @@
 
 func (c *AccountsContainersWorkspacesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8030,7 +8030,7 @@
 
 func (c *AccountsContainersWorkspacesBuiltInVariablesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8492,7 +8492,7 @@
 
 func (c *AccountsContainersWorkspacesBuiltInVariablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8830,7 +8830,7 @@
 
 func (c *AccountsContainersWorkspacesBuiltInVariablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9104,7 +9104,7 @@
 
 func (c *AccountsContainersWorkspacesBuiltInVariablesRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9453,7 +9453,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9589,7 +9589,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9696,7 +9696,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersEntitiesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -9862,7 +9862,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10012,7 +10012,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10193,7 +10193,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersMoveEntitiesToFolderCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10326,7 +10326,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10468,7 +10468,7 @@
 
 func (c *AccountsContainersWorkspacesFoldersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10611,7 +10611,7 @@
 
 func (c *AccountsContainersWorkspacesTagsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10747,7 +10747,7 @@
 
 func (c *AccountsContainersWorkspacesTagsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10858,7 +10858,7 @@
 
 func (c *AccountsContainersWorkspacesTagsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11008,7 +11008,7 @@
 
 func (c *AccountsContainersWorkspacesTagsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11173,7 +11173,7 @@
 
 func (c *AccountsContainersWorkspacesTagsRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11315,7 +11315,7 @@
 
 func (c *AccountsContainersWorkspacesTagsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11458,7 +11458,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11594,7 +11594,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11705,7 +11705,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11855,7 +11855,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12021,7 +12021,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12164,7 +12164,7 @@
 
 func (c *AccountsContainersWorkspacesTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12307,7 +12307,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12443,7 +12443,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12554,7 +12554,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12704,7 +12704,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12870,7 +12870,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13013,7 +13013,7 @@
 
 func (c *AccountsContainersWorkspacesTriggersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13156,7 +13156,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13292,7 +13292,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13403,7 +13403,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13553,7 +13553,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13719,7 +13719,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13862,7 +13862,7 @@
 
 func (c *AccountsContainersWorkspacesVariablesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14005,7 +14005,7 @@
 
 func (c *AccountsContainersWorkspacesZonesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14141,7 +14141,7 @@
 
 func (c *AccountsContainersWorkspacesZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14252,7 +14252,7 @@
 
 func (c *AccountsContainersWorkspacesZonesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14402,7 +14402,7 @@
 
 func (c *AccountsContainersWorkspacesZonesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14567,7 +14567,7 @@
 
 func (c *AccountsContainersWorkspacesZonesRevertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14709,7 +14709,7 @@
 
 func (c *AccountsContainersWorkspacesZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14852,7 +14852,7 @@
 
 func (c *AccountsUserPermissionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14989,7 +14989,7 @@
 
 func (c *AccountsUserPermissionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15100,7 +15100,7 @@
 
 func (c *AccountsUserPermissionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15250,7 +15250,7 @@
 
 func (c *AccountsUserPermissionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15409,7 +15409,7 @@
 
 func (c *AccountsUserPermissionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/tasks/v1/tasks-gen.go b/tasks/v1/tasks-gen.go
index 8693d11..4d6c30d 100644
--- a/tasks/v1/tasks-gen.go
+++ b/tasks/v1/tasks-gen.go
@@ -457,7 +457,7 @@
 
 func (c *TasklistsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -568,7 +568,7 @@
 
 func (c *TasklistsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -701,7 +701,7 @@
 
 func (c *TasklistsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -847,7 +847,7 @@
 
 func (c *TasklistsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1002,7 +1002,7 @@
 
 func (c *TasklistsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1140,7 +1140,7 @@
 
 func (c *TasklistsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1278,7 +1278,7 @@
 
 func (c *TasksClearCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1380,7 +1380,7 @@
 
 func (c *TasksDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1501,7 +1501,7 @@
 
 func (c *TasksGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1658,7 +1658,7 @@
 
 func (c *TasksInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1894,7 +1894,7 @@
 
 func (c *TasksListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2118,7 +2118,7 @@
 
 func (c *TasksMoveCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2269,7 +2269,7 @@
 
 func (c *TasksPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2417,7 +2417,7 @@
 
 func (c *TasksUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/testing/v1/testing-gen.go b/testing/v1/testing-gen.go
index 2e1cdd5..30b3a7e 100644
--- a/testing/v1/testing-gen.go
+++ b/testing/v1/testing-gen.go
@@ -3335,7 +3335,7 @@
 
 func (c *ApplicationDetailServiceGetApkDetailsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3472,7 +3472,7 @@
 
 func (c *ProjectsTestMatricesCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3635,7 +3635,7 @@
 
 func (c *ProjectsTestMatricesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3796,7 +3796,7 @@
 
 func (c *ProjectsTestMatricesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3961,7 +3961,7 @@
 
 func (c *TestEnvironmentCatalogGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/texttospeech/v1/texttospeech-gen.go b/texttospeech/v1/texttospeech-gen.go
index 6fd1257..934674b 100644
--- a/texttospeech/v1/texttospeech-gen.go
+++ b/texttospeech/v1/texttospeech-gen.go
@@ -606,7 +606,7 @@
 
 func (c *TextSynthesizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -760,7 +760,7 @@
 
 func (c *VoicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/texttospeech/v1beta1/texttospeech-gen.go b/texttospeech/v1beta1/texttospeech-gen.go
index c6e363e..0470971 100644
--- a/texttospeech/v1beta1/texttospeech-gen.go
+++ b/texttospeech/v1beta1/texttospeech-gen.go
@@ -606,7 +606,7 @@
 
 func (c *TextSynthesizeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -760,7 +760,7 @@
 
 func (c *VoicesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/toolresults/v1beta3/toolresults-gen.go b/toolresults/v1beta3/toolresults-gen.go
index 465af31..b8b986e 100644
--- a/toolresults/v1beta3/toolresults-gen.go
+++ b/toolresults/v1beta3/toolresults-gen.go
@@ -3379,7 +3379,7 @@
 
 func (c *ProjectsGetSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3537,7 +3537,7 @@
 
 func (c *ProjectsInitializeSettingsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3685,7 +3685,7 @@
 
 func (c *ProjectsHistoriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3845,7 +3845,7 @@
 
 func (c *ProjectsHistoriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4030,7 +4030,7 @@
 
 func (c *ProjectsHistoriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4220,7 +4220,7 @@
 
 func (c *ProjectsHistoriesExecutionsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4390,7 +4390,7 @@
 
 func (c *ProjectsHistoriesExecutionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4577,7 +4577,7 @@
 
 func (c *ProjectsHistoriesExecutionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4772,7 +4772,7 @@
 
 func (c *ProjectsHistoriesExecutionsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4946,7 +4946,7 @@
 
 func (c *ProjectsHistoriesExecutionsClustersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5121,7 +5121,7 @@
 
 func (c *ProjectsHistoriesExecutionsClustersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5290,7 +5290,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5470,7 +5470,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5645,7 +5645,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsGetPerfMetricsSummaryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5844,7 +5844,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6051,7 +6051,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6232,7 +6232,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPublishXunitXmlFilesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6404,7 +6404,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfMetricsSummaryCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6576,7 +6576,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfSampleSeriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6758,7 +6758,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfSampleSeriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6959,7 +6959,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfSampleSeriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7153,7 +7153,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfSampleSeriesSamplesBatchCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7365,7 +7365,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsPerfSampleSeriesSamplesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7586,7 +7586,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsTestCasesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7790,7 +7790,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsTestCasesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -8017,7 +8017,7 @@
 
 func (c *ProjectsHistoriesExecutionsStepsThumbnailsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/tpu/v1/tpu-gen.go b/tpu/v1/tpu-gen.go
index b0b05fa..eda2516 100644
--- a/tpu/v1/tpu-gen.go
+++ b/tpu/v1/tpu-gen.go
@@ -1019,7 +1019,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1185,7 +1185,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1366,7 +1366,7 @@
 
 func (c *ProjectsLocationsAcceleratorTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1536,7 +1536,7 @@
 
 func (c *ProjectsLocationsAcceleratorTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1720,7 +1720,7 @@
 
 func (c *ProjectsLocationsNodesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1863,7 +1863,7 @@
 
 func (c *ProjectsLocationsNodesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2004,7 +2004,7 @@
 
 func (c *ProjectsLocationsNodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2162,7 +2162,7 @@
 
 func (c *ProjectsLocationsNodesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2329,7 +2329,7 @@
 
 func (c *ProjectsLocationsNodesReimageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2469,7 +2469,7 @@
 
 func (c *ProjectsLocationsNodesStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2609,7 +2609,7 @@
 
 func (c *ProjectsLocationsNodesStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2764,7 +2764,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2900,7 +2900,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3045,7 +3045,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3226,7 +3226,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3407,7 +3407,7 @@
 
 func (c *ProjectsLocationsTensorflowVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3577,7 +3577,7 @@
 
 func (c *ProjectsLocationsTensorflowVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/tpu/v1alpha1/tpu-gen.go b/tpu/v1alpha1/tpu-gen.go
index 27341c7..95ebe23 100644
--- a/tpu/v1alpha1/tpu-gen.go
+++ b/tpu/v1alpha1/tpu-gen.go
@@ -1019,7 +1019,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1185,7 +1185,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1366,7 +1366,7 @@
 
 func (c *ProjectsLocationsAcceleratorTypesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1536,7 +1536,7 @@
 
 func (c *ProjectsLocationsAcceleratorTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1720,7 +1720,7 @@
 
 func (c *ProjectsLocationsNodesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1863,7 +1863,7 @@
 
 func (c *ProjectsLocationsNodesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2004,7 +2004,7 @@
 
 func (c *ProjectsLocationsNodesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2162,7 +2162,7 @@
 
 func (c *ProjectsLocationsNodesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2329,7 +2329,7 @@
 
 func (c *ProjectsLocationsNodesReimageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2469,7 +2469,7 @@
 
 func (c *ProjectsLocationsNodesStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2609,7 +2609,7 @@
 
 func (c *ProjectsLocationsNodesStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2764,7 +2764,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2900,7 +2900,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3045,7 +3045,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3226,7 +3226,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3407,7 +3407,7 @@
 
 func (c *ProjectsLocationsTensorflowVersionsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3577,7 +3577,7 @@
 
 func (c *ProjectsLocationsTensorflowVersionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/translate/v2/translate-gen.go b/translate/v2/translate-gen.go
index ba2fb79..cd604b0 100644
--- a/translate/v2/translate-gen.go
+++ b/translate/v2/translate-gen.go
@@ -562,7 +562,7 @@
 
 func (c *DetectionsDetectCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -699,7 +699,7 @@
 
 func (c *DetectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -855,7 +855,7 @@
 
 func (c *LanguagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1038,7 +1038,7 @@
 
 func (c *TranslationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1206,7 +1206,7 @@
 
 func (c *TranslationsTranslateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/translate/v3beta1/translate-gen.go b/translate/v3beta1/translate-gen.go
index bf0bd6d..e04af72 100644
--- a/translate/v3beta1/translate-gen.go
+++ b/translate/v3beta1/translate-gen.go
@@ -1574,7 +1574,7 @@
 
 func (c *ProjectsDetectLanguageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1763,7 +1763,7 @@
 
 func (c *ProjectsGetSupportedLanguagesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1909,7 +1909,7 @@
 
 func (c *ProjectsTranslateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2060,7 +2060,7 @@
 
 func (c *ProjectsLocationsBatchTranslateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2200,7 +2200,7 @@
 
 func (c *ProjectsLocationsDetectLanguageCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2350,7 +2350,7 @@
 
 func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2534,7 +2534,7 @@
 
 func (c *ProjectsLocationsGetSupportedLanguagesCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2711,7 +2711,7 @@
 
 func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2884,7 +2884,7 @@
 
 func (c *ProjectsLocationsTranslateTextCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3027,7 +3027,7 @@
 
 func (c *ProjectsLocationsGlossariesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3167,7 +3167,7 @@
 
 func (c *ProjectsLocationsGlossariesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3311,7 +3311,7 @@
 
 func (c *ProjectsLocationsGlossariesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3487,7 +3487,7 @@
 
 func (c *ProjectsLocationsGlossariesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3677,7 +3677,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3822,7 +3822,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3968,7 +3968,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4150,7 +4150,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4338,7 +4338,7 @@
 
 func (c *ProjectsLocationsOperationsWaitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/vault/v1/vault-gen.go b/vault/v1/vault-gen.go
index 6316eed..c1e7d87 100644
--- a/vault/v1/vault-gen.go
+++ b/vault/v1/vault-gen.go
@@ -2078,7 +2078,7 @@
 
 func (c *MattersAddPermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2218,7 +2218,7 @@
 
 func (c *MattersCloseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2359,7 +2359,7 @@
 
 func (c *MattersCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2485,7 +2485,7 @@
 
 func (c *MattersDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2637,7 +2637,7 @@
 
 func (c *MattersGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2830,7 +2830,7 @@
 
 func (c *MattersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3007,7 +3007,7 @@
 
 func (c *MattersRemovePermissionsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3147,7 +3147,7 @@
 
 func (c *MattersReopenCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3287,7 +3287,7 @@
 
 func (c *MattersUndeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3430,7 +3430,7 @@
 
 func (c *MattersUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3569,7 +3569,7 @@
 
 func (c *MattersExportsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3708,7 +3708,7 @@
 
 func (c *MattersExportsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3858,7 +3858,7 @@
 
 func (c *MattersExportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4024,7 +4024,7 @@
 
 func (c *MattersExportsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4197,7 +4197,7 @@
 
 func (c *MattersHoldsAddHeldAccountsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4344,7 +4344,7 @@
 
 func (c *MattersHoldsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4484,7 +4484,7 @@
 
 func (c *MattersHoldsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4646,7 +4646,7 @@
 
 func (c *MattersHoldsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -4838,7 +4838,7 @@
 
 func (c *MattersHoldsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5021,7 +5021,7 @@
 
 func (c *MattersHoldsRemoveHeldAccountsCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5174,7 +5174,7 @@
 
 func (c *MattersHoldsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5327,7 +5327,7 @@
 
 func (c *MattersHoldsAccountsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5478,7 +5478,7 @@
 
 func (c *MattersHoldsAccountsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5640,7 +5640,7 @@
 
 func (c *MattersHoldsAccountsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5783,7 +5783,7 @@
 
 func (c *MattersSavedQueriesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -5922,7 +5922,7 @@
 
 func (c *MattersSavedQueriesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6072,7 +6072,7 @@
 
 func (c *MattersSavedQueriesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6241,7 +6241,7 @@
 
 func (c *MattersSavedQueriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6412,7 +6412,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/verifiedaccess/v1/verifiedaccess-gen.go b/verifiedaccess/v1/verifiedaccess-gen.go
index d301677..b7e8c8e 100644
--- a/verifiedaccess/v1/verifiedaccess-gen.go
+++ b/verifiedaccess/v1/verifiedaccess-gen.go
@@ -366,7 +366,7 @@
 
 func (c *ChallengeCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -491,7 +491,7 @@
 
 func (c *ChallengeVerifyCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/videointelligence/v1/videointelligence-api.json b/videointelligence/v1/videointelligence-api.json
index 98bd615..4a1d222 100644
--- a/videointelligence/v1/videointelligence-api.json
+++ b/videointelligence/v1/videointelligence-api.json
@@ -349,7 +349,7 @@
       }
     }
   },
-  "revision": "20191018",
+  "revision": "20191028",
   "rootUrl": "https://videointelligence.googleapis.com/",
   "schemas": {
     "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
@@ -3252,7 +3252,7 @@
       "type": "object"
     },
     "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject": {
-      "description": "For tracking related features, such as LOGO_RECOGNITION, FACE_DETECTION,\nCELEBRITY_RECOGNITION, PERSON_DETECTION.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
+      "description": "For tracking related features.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
       "id": "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject",
       "properties": {
         "attributes": {
diff --git a/videointelligence/v1/videointelligence-gen.go b/videointelligence/v1/videointelligence-gen.go
index b3593ca..9009c36 100644
--- a/videointelligence/v1/videointelligence-gen.go
+++ b/videointelligence/v1/videointelligence-gen.go
@@ -6132,9 +6132,7 @@
 }
 
 // GoogleCloudVideointelligenceV1p3beta1TimestampedObject: For tracking
-// related features, such as LOGO_RECOGNITION,
-// FACE_DETECTION,
-// CELEBRITY_RECOGNITION, PERSON_DETECTION.
+// related features.
 // An object at time_offset with attributes, and located
 // with
 // normalized_bounding_box.
@@ -6758,7 +6756,7 @@
 
 func (c *OperationsProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -6894,7 +6892,7 @@
 
 func (c *OperationsProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7039,7 +7037,7 @@
 
 func (c *OperationsProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7191,7 +7189,7 @@
 
 func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7335,7 +7333,7 @@
 
 func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7480,7 +7478,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7661,7 +7659,7 @@
 
 func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -7838,7 +7836,7 @@
 
 func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/videointelligence/v1beta2/videointelligence-gen.go b/videointelligence/v1beta2/videointelligence-gen.go
index e131b02..5abd606 100644
--- a/videointelligence/v1beta2/videointelligence-gen.go
+++ b/videointelligence/v1beta2/videointelligence-gen.go
@@ -6601,7 +6601,7 @@
 
 func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/videointelligence/v1p1beta1/videointelligence-gen.go b/videointelligence/v1p1beta1/videointelligence-gen.go
index 1bd232f..86a516a 100644
--- a/videointelligence/v1p1beta1/videointelligence-gen.go
+++ b/videointelligence/v1p1beta1/videointelligence-gen.go
@@ -6603,7 +6603,7 @@
 
 func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/videointelligence/v1p2beta1/videointelligence-api.json b/videointelligence/v1p2beta1/videointelligence-api.json
index 3267d08..9dd12f8 100644
--- a/videointelligence/v1p2beta1/videointelligence-api.json
+++ b/videointelligence/v1p2beta1/videointelligence-api.json
@@ -127,7 +127,7 @@
       }
     }
   },
-  "revision": "20191018",
+  "revision": "20191028",
   "rootUrl": "https://videointelligence.googleapis.com/",
   "schemas": {
     "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
@@ -3030,7 +3030,7 @@
       "type": "object"
     },
     "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject": {
-      "description": "For tracking related features, such as LOGO_RECOGNITION, FACE_DETECTION,\nCELEBRITY_RECOGNITION, PERSON_DETECTION.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
+      "description": "For tracking related features.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
       "id": "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject",
       "properties": {
         "attributes": {
diff --git a/videointelligence/v1p2beta1/videointelligence-gen.go b/videointelligence/v1p2beta1/videointelligence-gen.go
index 5b58aec..5ed572f 100644
--- a/videointelligence/v1p2beta1/videointelligence-gen.go
+++ b/videointelligence/v1p2beta1/videointelligence-gen.go
@@ -6048,9 +6048,7 @@
 }
 
 // GoogleCloudVideointelligenceV1p3beta1TimestampedObject: For tracking
-// related features, such as LOGO_RECOGNITION,
-// FACE_DETECTION,
-// CELEBRITY_RECOGNITION, PERSON_DETECTION.
+// related features.
 // An object at time_offset with attributes, and located
 // with
 // normalized_bounding_box.
@@ -6603,7 +6601,7 @@
 
 func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/videointelligence/v1p3beta1/videointelligence-api.json b/videointelligence/v1p3beta1/videointelligence-api.json
index 4c85620..77438dd 100644
--- a/videointelligence/v1p3beta1/videointelligence-api.json
+++ b/videointelligence/v1p3beta1/videointelligence-api.json
@@ -127,7 +127,7 @@
       }
     }
   },
-  "revision": "20191018",
+  "revision": "20191028",
   "rootUrl": "https://videointelligence.googleapis.com/",
   "schemas": {
     "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
@@ -2994,7 +2994,7 @@
       "type": "object"
     },
     "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject": {
-      "description": "For tracking related features, such as LOGO_RECOGNITION, FACE_DETECTION,\nCELEBRITY_RECOGNITION, PERSON_DETECTION.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
+      "description": "For tracking related features.\nAn object at time_offset with attributes, and located with\nnormalized_bounding_box.",
       "id": "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject",
       "properties": {
         "attributes": {
diff --git a/videointelligence/v1p3beta1/videointelligence-gen.go b/videointelligence/v1p3beta1/videointelligence-gen.go
index fc388a3..3f13dd3 100644
--- a/videointelligence/v1p3beta1/videointelligence-gen.go
+++ b/videointelligence/v1p3beta1/videointelligence-gen.go
@@ -5995,9 +5995,7 @@
 }
 
 // GoogleCloudVideointelligenceV1p3beta1TimestampedObject: For tracking
-// related features, such as LOGO_RECOGNITION,
-// FACE_DETECTION,
-// CELEBRITY_RECOGNITION, PERSON_DETECTION.
+// related features.
 // An object at time_offset with attributes, and located
 // with
 // normalized_bounding_box.
@@ -6604,7 +6602,7 @@
 
 func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/vision/v1/vision-gen.go b/vision/v1/vision-gen.go
index 645ecc0..03ea452 100644
--- a/vision/v1/vision-gen.go
+++ b/vision/v1/vision-gen.go
@@ -15079,7 +15079,7 @@
 
 func (c *FilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15215,7 +15215,7 @@
 
 func (c *FilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15341,7 +15341,7 @@
 
 func (c *ImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15481,7 +15481,7 @@
 
 func (c *ImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15622,7 +15622,7 @@
 
 func (c *LocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15775,7 +15775,7 @@
 
 func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15920,7 +15920,7 @@
 
 func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16066,7 +16066,7 @@
 
 func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16248,7 +16248,7 @@
 
 func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16432,7 +16432,7 @@
 
 func (c *ProjectsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16583,7 +16583,7 @@
 
 func (c *ProjectsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16724,7 +16724,7 @@
 
 func (c *ProjectsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16879,7 +16879,7 @@
 
 func (c *ProjectsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17031,7 +17031,7 @@
 
 func (c *ProjectsLocationsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17182,7 +17182,7 @@
 
 func (c *ProjectsLocationsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17323,7 +17323,7 @@
 
 func (c *ProjectsLocationsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17478,7 +17478,7 @@
 
 func (c *ProjectsLocationsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17632,7 +17632,7 @@
 
 func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17776,7 +17776,7 @@
 
 func (c *ProjectsLocationsProductSetsAddProductCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17936,7 +17936,7 @@
 
 func (c *ProjectsLocationsProductSetsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18084,7 +18084,7 @@
 
 func (c *ProjectsLocationsProductSetsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18230,7 +18230,7 @@
 
 func (c *ProjectsLocationsProductSetsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18382,7 +18382,7 @@
 
 func (c *ProjectsLocationsProductSetsImportCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18551,7 +18551,7 @@
 
 func (c *ProjectsLocationsProductSetsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18738,7 +18738,7 @@
 
 func (c *ProjectsLocationsProductSetsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18885,7 +18885,7 @@
 
 func (c *ProjectsLocationsProductSetsRemoveProductCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19058,7 +19058,7 @@
 
 func (c *ProjectsLocationsProductSetsProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19247,7 +19247,7 @@
 
 func (c *ProjectsLocationsProductsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19398,7 +19398,7 @@
 
 func (c *ProjectsLocationsProductsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19544,7 +19544,7 @@
 
 func (c *ProjectsLocationsProductsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19708,7 +19708,7 @@
 
 func (c *ProjectsLocationsProductsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19908,7 +19908,7 @@
 
 func (c *ProjectsLocationsProductsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20091,7 +20091,7 @@
 
 func (c *ProjectsLocationsProductsPurgeCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20272,7 +20272,7 @@
 
 func (c *ProjectsLocationsProductsReferenceImagesCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20424,7 +20424,7 @@
 
 func (c *ProjectsLocationsProductsReferenceImagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20570,7 +20570,7 @@
 
 func (c *ProjectsLocationsProductsReferenceImagesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20740,7 +20740,7 @@
 
 func (c *ProjectsLocationsProductsReferenceImagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20921,7 +20921,7 @@
 
 func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/vision/v1p1beta1/vision-gen.go b/vision/v1p1beta1/vision-gen.go
index 3d75d64..745eba9 100644
--- a/vision/v1p1beta1/vision-gen.go
+++ b/vision/v1p1beta1/vision-gen.go
@@ -14412,7 +14412,7 @@
 
 func (c *FilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14550,7 +14550,7 @@
 
 func (c *FilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14676,7 +14676,7 @@
 
 func (c *ImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14818,7 +14818,7 @@
 
 func (c *ImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14957,7 +14957,7 @@
 
 func (c *ProjectsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15110,7 +15110,7 @@
 
 func (c *ProjectsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15251,7 +15251,7 @@
 
 func (c *ProjectsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15408,7 +15408,7 @@
 
 func (c *ProjectsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15560,7 +15560,7 @@
 
 func (c *ProjectsLocationsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15713,7 +15713,7 @@
 
 func (c *ProjectsLocationsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15854,7 +15854,7 @@
 
 func (c *ProjectsLocationsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16011,7 +16011,7 @@
 
 func (c *ProjectsLocationsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/vision/v1p2beta1/vision-gen.go b/vision/v1p2beta1/vision-gen.go
index 9947d44..ef62565 100644
--- a/vision/v1p2beta1/vision-gen.go
+++ b/vision/v1p2beta1/vision-gen.go
@@ -14412,7 +14412,7 @@
 
 func (c *FilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14550,7 +14550,7 @@
 
 func (c *FilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14676,7 +14676,7 @@
 
 func (c *ImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14818,7 +14818,7 @@
 
 func (c *ImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14957,7 +14957,7 @@
 
 func (c *ProjectsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15110,7 +15110,7 @@
 
 func (c *ProjectsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15251,7 +15251,7 @@
 
 func (c *ProjectsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15408,7 +15408,7 @@
 
 func (c *ProjectsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15560,7 +15560,7 @@
 
 func (c *ProjectsLocationsFilesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15713,7 +15713,7 @@
 
 func (c *ProjectsLocationsFilesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15854,7 +15854,7 @@
 
 func (c *ProjectsLocationsImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16011,7 +16011,7 @@
 
 func (c *ProjectsLocationsImagesAsyncBatchAnnotateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/webfonts/v1/webfonts-gen.go b/webfonts/v1/webfonts-gen.go
index bc0cf46..0ea8267 100644
--- a/webfonts/v1/webfonts-gen.go
+++ b/webfonts/v1/webfonts-gen.go
@@ -280,7 +280,7 @@
 
 func (c *WebfontsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/webmasters/v3/webmasters-gen.go b/webmasters/v3/webmasters-gen.go
index b34e3ca..10a359f 100644
--- a/webmasters/v3/webmasters-gen.go
+++ b/webmasters/v3/webmasters-gen.go
@@ -656,7 +656,7 @@
 
 func (c *SearchanalyticsQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -795,7 +795,7 @@
 
 func (c *SitemapsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -916,7 +916,7 @@
 
 func (c *SitemapsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1077,7 +1077,7 @@
 
 func (c *SitemapsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1216,7 +1216,7 @@
 
 func (c *SitemapsSubmitCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1324,7 +1324,7 @@
 
 func (c *SitesAddCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1425,7 +1425,7 @@
 
 func (c *SitesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1536,7 +1536,7 @@
 
 func (c *SitesGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1677,7 +1677,7 @@
 
 func (c *SitesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/websecurityscanner/v1/websecurityscanner-gen.go b/websecurityscanner/v1/websecurityscanner-gen.go
index b97bb7a..93b0a0e 100644
--- a/websecurityscanner/v1/websecurityscanner-gen.go
+++ b/websecurityscanner/v1/websecurityscanner-gen.go
@@ -1497,7 +1497,7 @@
 
 func (c *ProjectsScanConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1635,7 +1635,7 @@
 
 func (c *ProjectsScanConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1776,7 +1776,7 @@
 
 func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1940,7 +1940,7 @@
 
 func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2119,7 +2119,7 @@
 
 func (c *ProjectsScanConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2265,7 +2265,7 @@
 
 func (c *ProjectsScanConfigsStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2414,7 +2414,7 @@
 
 func (c *ProjectsScanConfigsScanRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2580,7 +2580,7 @@
 
 func (c *ProjectsScanConfigsScanRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2747,7 +2747,7 @@
 
 func (c *ProjectsScanConfigsScanRunsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2916,7 +2916,7 @@
 
 func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3092,7 +3092,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3236,7 +3236,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3410,7 +3410,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/websecurityscanner/v1alpha/websecurityscanner-gen.go b/websecurityscanner/v1alpha/websecurityscanner-gen.go
index 7b1f435..70e8421 100644
--- a/websecurityscanner/v1alpha/websecurityscanner-gen.go
+++ b/websecurityscanner/v1alpha/websecurityscanner-gen.go
@@ -1278,7 +1278,7 @@
 
 func (c *ProjectsScanConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1416,7 +1416,7 @@
 
 func (c *ProjectsScanConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1557,7 +1557,7 @@
 
 func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1721,7 +1721,7 @@
 
 func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1900,7 +1900,7 @@
 
 func (c *ProjectsScanConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2046,7 +2046,7 @@
 
 func (c *ProjectsScanConfigsStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2195,7 +2195,7 @@
 
 func (c *ProjectsScanConfigsScanRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2361,7 +2361,7 @@
 
 func (c *ProjectsScanConfigsScanRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2528,7 +2528,7 @@
 
 func (c *ProjectsScanConfigsScanRunsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2697,7 +2697,7 @@
 
 func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2873,7 +2873,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3017,7 +3017,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3191,7 +3191,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/websecurityscanner/v1beta/websecurityscanner-gen.go b/websecurityscanner/v1beta/websecurityscanner-gen.go
index 0983e7f..8e064b7 100644
--- a/websecurityscanner/v1beta/websecurityscanner-gen.go
+++ b/websecurityscanner/v1beta/websecurityscanner-gen.go
@@ -1470,7 +1470,7 @@
 
 func (c *ProjectsScanConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1608,7 +1608,7 @@
 
 func (c *ProjectsScanConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1749,7 +1749,7 @@
 
 func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1913,7 +1913,7 @@
 
 func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2092,7 +2092,7 @@
 
 func (c *ProjectsScanConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2238,7 +2238,7 @@
 
 func (c *ProjectsScanConfigsStartCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2387,7 +2387,7 @@
 
 func (c *ProjectsScanConfigsScanRunsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2553,7 +2553,7 @@
 
 func (c *ProjectsScanConfigsScanRunsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2720,7 +2720,7 @@
 
 func (c *ProjectsScanConfigsScanRunsStopCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2889,7 +2889,7 @@
 
 func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3065,7 +3065,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3209,7 +3209,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3383,7 +3383,7 @@
 
 func (c *ProjectsScanConfigsScanRunsFindingsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/youtube/v3/youtube-gen.go b/youtube/v3/youtube-gen.go
index dbdccf1..88ec93e 100644
--- a/youtube/v3/youtube-gen.go
+++ b/youtube/v3/youtube-gen.go
@@ -10237,7 +10237,7 @@
 
 func (c *ActivitiesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10460,7 +10460,7 @@
 
 func (c *ActivitiesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10682,7 +10682,7 @@
 
 func (c *CaptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -10857,7 +10857,7 @@
 
 func (c *CaptionsDownloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11093,7 +11093,7 @@
 
 func (c *CaptionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11338,7 +11338,7 @@
 
 func (c *CaptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11571,7 +11571,7 @@
 
 func (c *CaptionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -11851,7 +11851,7 @@
 
 func (c *ChannelBannersInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12051,7 +12051,7 @@
 
 func (c *ChannelSectionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12200,7 +12200,7 @@
 
 func (c *ChannelSectionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12412,7 +12412,7 @@
 
 func (c *ChannelSectionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12587,7 +12587,7 @@
 
 func (c *ChannelSectionsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -12835,7 +12835,7 @@
 
 func (c *ChannelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13060,7 +13060,7 @@
 
 func (c *ChannelsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13202,7 +13202,7 @@
 
 func (c *CommentThreadsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13469,7 +13469,7 @@
 
 func (c *CommentThreadsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13702,7 +13702,7 @@
 
 func (c *CommentThreadsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13834,7 +13834,7 @@
 
 func (c *CommentsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -13933,7 +13933,7 @@
 
 func (c *CommentsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14133,7 +14133,7 @@
 
 func (c *CommentsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14320,7 +14320,7 @@
 
 func (c *CommentsMarkAsSpamCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14431,7 +14431,7 @@
 
 func (c *CommentsSetModerationStatusCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14552,7 +14552,7 @@
 
 func (c *CommentsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14721,7 +14721,7 @@
 
 func (c *GuideCategoriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -14886,7 +14886,7 @@
 
 func (c *I18nLanguagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15041,7 +15041,7 @@
 
 func (c *I18nRegionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15234,7 +15234,7 @@
 
 func (c *LiveBroadcastsBindCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15464,7 +15464,7 @@
 
 func (c *LiveBroadcastsControlCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15667,7 +15667,7 @@
 
 func (c *LiveBroadcastsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -15820,7 +15820,7 @@
 
 func (c *LiveBroadcastsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16082,7 +16082,7 @@
 
 func (c *LiveBroadcastsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16351,7 +16351,7 @@
 
 func (c *LiveBroadcastsTransitionCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16558,7 +16558,7 @@
 
 func (c *LiveBroadcastsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16701,7 +16701,7 @@
 
 func (c *LiveChatBansDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16800,7 +16800,7 @@
 
 func (c *LiveChatBansInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -16933,7 +16933,7 @@
 
 func (c *LiveChatMessagesDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17032,7 +17032,7 @@
 
 func (c *LiveChatMessagesInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17218,7 +17218,7 @@
 
 func (c *LiveChatMessagesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17402,7 +17402,7 @@
 
 func (c *LiveChatModeratorsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17501,7 +17501,7 @@
 
 func (c *LiveChatModeratorsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17663,7 +17663,7 @@
 
 func (c *LiveChatModeratorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -17878,7 +17878,7 @@
 
 func (c *LiveStreamsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18033,7 +18033,7 @@
 
 func (c *LiveStreamsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18267,7 +18267,7 @@
 
 func (c *LiveStreamsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18499,7 +18499,7 @@
 
 func (c *LiveStreamsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18692,7 +18692,7 @@
 
 func (c *MembersListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -18887,7 +18887,7 @@
 
 func (c *MembershipsLevelsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19035,7 +19035,7 @@
 
 func (c *PlaylistItemsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19158,7 +19158,7 @@
 
 func (c *PlaylistItemsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19371,7 +19371,7 @@
 
 func (c *PlaylistItemsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19578,7 +19578,7 @@
 
 func (c *PlaylistItemsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19735,7 +19735,7 @@
 
 func (c *PlaylistsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -19884,7 +19884,7 @@
 
 func (c *PlaylistsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20136,7 +20136,7 @@
 
 func (c *PlaylistsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20352,7 +20352,7 @@
 
 func (c *PlaylistsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -20905,7 +20905,7 @@
 
 func (c *SearchListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21375,7 +21375,7 @@
 
 func (c *SponsorsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21553,7 +21553,7 @@
 
 func (c *SubscriptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21653,7 +21653,7 @@
 
 func (c *SubscriptionsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -21923,7 +21923,7 @@
 
 func (c *SubscriptionsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22188,7 +22188,7 @@
 
 func (c *SuperChatEventsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22417,7 +22417,7 @@
 
 func (c *ThumbnailsSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22615,7 +22615,7 @@
 
 func (c *VideoAbuseReportReasonsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22787,7 +22787,7 @@
 
 func (c *VideoCategoriesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -22952,7 +22952,7 @@
 
 func (c *VideosDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23085,7 +23085,7 @@
 
 func (c *VideosGetRatingCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23335,7 +23335,7 @@
 
 func (c *VideosInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23688,7 +23688,7 @@
 
 func (c *VideosListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -23926,7 +23926,7 @@
 
 func (c *VideosRateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24060,7 +24060,7 @@
 
 func (c *VideosReportAbuseCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24183,7 +24183,7 @@
 
 func (c *VideosUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24382,7 +24382,7 @@
 
 func (c *WatermarksSetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -24559,7 +24559,7 @@
 
 func (c *WatermarksUnsetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/youtubeanalytics/v2/youtubeanalytics-gen.go b/youtubeanalytics/v2/youtubeanalytics-gen.go
index 0d0ec7b..f0b9d01 100644
--- a/youtubeanalytics/v2/youtubeanalytics-gen.go
+++ b/youtubeanalytics/v2/youtubeanalytics-gen.go
@@ -867,7 +867,7 @@
 
 func (c *GroupItemsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1024,7 +1024,7 @@
 
 func (c *GroupItemsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1202,7 +1202,7 @@
 
 func (c *GroupItemsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1368,7 +1368,7 @@
 
 func (c *GroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1525,7 +1525,7 @@
 
 func (c *GroupsInsertCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1734,7 +1734,7 @@
 
 func (c *GroupsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1926,7 +1926,7 @@
 
 func (c *GroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2217,7 +2217,7 @@
 
 func (c *ReportsQueryCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
diff --git a/youtubereporting/v1/youtubereporting-gen.go b/youtubereporting/v1/youtubereporting-gen.go
index b469f99..9fad596 100644
--- a/youtubereporting/v1/youtubereporting-gen.go
+++ b/youtubereporting/v1/youtubereporting-gen.go
@@ -1044,7 +1044,7 @@
 
 func (c *JobsCreateCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1185,7 +1185,7 @@
 
 func (c *JobsDeleteCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1340,7 +1340,7 @@
 
 func (c *JobsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1526,7 +1526,7 @@
 
 func (c *JobsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1712,7 +1712,7 @@
 
 func (c *JobsReportsGetCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -1924,7 +1924,7 @@
 
 func (c *JobsReportsListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2124,7 +2124,7 @@
 
 func (c *MediaDownloadCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2325,7 +2325,7 @@
 
 func (c *ReportTypesListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191031")
+	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191102")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
