all: autogenerated update (2019-06-20)

Add:
- firebase/v1beta1

Update:
- accesscontextmanager/v1beta
- adexchangebuyer/v1.3
- adexchangebuyer/v1.4
- androidpublisher/v1.1
- androidpublisher/v2
- androidpublisher/v3
- bigquery/v2
- cloudasset/v1
- cloudasset/v1beta1
- cloudfunctions/v1
- cloudfunctions/v1beta2
- commentanalyzer/v1alpha1
- composer/v1
- composer/v1beta1
- dialogflow/v2
- dialogflow/v2beta1
- file/v1
- file/v1beta1
- healthcare/v1alpha2
- healthcare/v1beta1
- ml/v1
- remotebuildexecution/v1
- remotebuildexecution/v1alpha
- remotebuildexecution/v2
- servicecontrol/v1
- servicemanagement/v1
- tagmanager/v1
- texttospeech/v1
- texttospeech/v1beta1
- toolresults/v1beta3
- tpu/v1alpha1
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-api.json b/accesscontextmanager/v1beta/accesscontextmanager-api.json
index 345fcb7..5f82a09 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-api.json
+++ b/accesscontextmanager/v1beta/accesscontextmanager-api.json
@@ -598,7 +598,7 @@
       }
     }
   },
-  "revision": "20190529",
+  "revision": "20190617",
   "rootUrl": "https://accesscontextmanager.googleapis.com/",
   "schemas": {
     "AccessLevel": {
@@ -689,6 +689,24 @@
       },
       "type": "object"
     },
+    "BridgeServiceRestriction": {
+      "description": "Alpha. Specifies which services are granted access via this Bridge Service\nPerimeter.",
+      "id": "BridgeServiceRestriction",
+      "properties": {
+        "allowedServices": {
+          "description": "The list of APIs usable through the Bridge Perimeter. Must be empty\nunless 'enable_restriction' is True.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "enableRestriction": {
+          "description": "Whether to restrict the set of APIs callable through the Bridge Service\nPerimeter.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "Condition": {
       "description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an\nAND over its fields. So a Condition is true if: 1) the request IP is from one\nof the listed subnetworks AND 2) the originating device complies with the\nlisted device policy AND 3) all listed access levels are granted AND 4) the\nrequest was sent at a time allowed by the DateTimeRestriction.",
       "id": "Condition",
@@ -796,6 +814,24 @@
       },
       "type": "object"
     },
+    "IngressServiceRestriction": {
+      "description": "Alpha. Specifies how Access Levels are to be used for accessing the Service\nPerimeter.",
+      "id": "IngressServiceRestriction",
+      "properties": {
+        "allowedServices": {
+          "description": "The list of APIs usable with a valid Access Level. Must be empty unless\n'enable_restriction' is True.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "enableRestriction": {
+          "description": "Whether to restrict the set of APIs callable outside the Service\nPerimeter via Access Levels.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "ListAccessLevelsResponse": {
       "description": "A response to `ListAccessLevelsRequest`.",
       "id": "ListAccessLevelsResponse",
@@ -974,6 +1010,14 @@
           },
           "type": "array"
         },
+        "bridgeServiceRestriction": {
+          "$ref": "BridgeServiceRestriction",
+          "description": "Alpha. Configuration for what services are accessible via the Bridge\nPerimeter. Must be empty for non-Bridge Perimeters."
+        },
+        "ingressServiceRestriction": {
+          "$ref": "IngressServiceRestriction",
+          "description": "Alpha. Configuration for which services may be used with Access Levels."
+        },
         "resources": {
           "description": "A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed. Format: `projects/{project_number}`",
           "items": {
@@ -994,6 +1038,10 @@
             "type": "string"
           },
           "type": "array"
+        },
+        "vpcServiceRestriction": {
+          "$ref": "VpcServiceRestriction",
+          "description": "Alpha. Configuration for within Perimeter allowed APIs."
         }
       },
       "type": "object"
@@ -1024,6 +1072,24 @@
         }
       },
       "type": "object"
+    },
+    "VpcServiceRestriction": {
+      "description": "Alpha. Specifies how APIs are allowed to communicate within the Service\nPerimeter.",
+      "id": "VpcServiceRestriction",
+      "properties": {
+        "allowedServices": {
+          "description": "The list of APIs usable within the Service Perimeter. Must be empty\nunless 'enable_restriction' is True.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "enableRestriction": {
+          "description": "Whether to restrict API calls within the Service Perimeter to the list of\nAPIs specified in 'allowed_services'.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-gen.go b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
index ab24798..eb629e6 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
@@ -336,6 +336,44 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// BridgeServiceRestriction: Alpha. Specifies which services are granted
+// access via this Bridge Service
+// Perimeter.
+type BridgeServiceRestriction struct {
+	// AllowedServices: The list of APIs usable through the Bridge
+	// Perimeter. Must be empty
+	// unless 'enable_restriction' is True.
+	AllowedServices []string `json:"allowedServices,omitempty"`
+
+	// EnableRestriction: Whether to restrict the set of APIs callable
+	// through the Bridge Service
+	// Perimeter.
+	EnableRestriction bool `json:"enableRestriction,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowedServices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowedServices") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *BridgeServiceRestriction) MarshalJSON() ([]byte, error) {
+	type NoMethod BridgeServiceRestriction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Condition: A condition necessary for an `AccessLevel` to be granted.
 // The Condition is an
 // AND over its fields. So a Condition is true if: 1) the request IP is
@@ -512,6 +550,44 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// IngressServiceRestriction: Alpha. Specifies how Access Levels are to
+// be used for accessing the Service
+// Perimeter.
+type IngressServiceRestriction struct {
+	// AllowedServices: The list of APIs usable with a valid Access Level.
+	// Must be empty unless
+	// 'enable_restriction' is True.
+	AllowedServices []string `json:"allowedServices,omitempty"`
+
+	// EnableRestriction: Whether to restrict the set of APIs callable
+	// outside the Service
+	// Perimeter via Access Levels.
+	EnableRestriction bool `json:"enableRestriction,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowedServices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowedServices") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IngressServiceRestriction) MarshalJSON() ([]byte, error) {
+	type NoMethod IngressServiceRestriction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ListAccessLevelsResponse: A response to `ListAccessLevelsRequest`.
 type ListAccessLevelsResponse struct {
 	// AccessLevels: List of the Access Level instances.
@@ -866,6 +942,15 @@
 	// For Service Perimeter Bridge, must be empty.
 	AccessLevels []string `json:"accessLevels,omitempty"`
 
+	// BridgeServiceRestriction: Alpha. Configuration for what services are
+	// accessible via the Bridge
+	// Perimeter. Must be empty for non-Bridge Perimeters.
+	BridgeServiceRestriction *BridgeServiceRestriction `json:"bridgeServiceRestriction,omitempty"`
+
+	// IngressServiceRestriction: Alpha. Configuration for which services
+	// may be used with Access Levels.
+	IngressServiceRestriction *IngressServiceRestriction `json:"ingressServiceRestriction,omitempty"`
+
 	// Resources: A list of GCP resources that are inside of the service
 	// perimeter.
 	// Currently only projects are allowed. Format:
@@ -889,6 +974,10 @@
 	// "restricted_services" list, any service is treated as unrestricted.
 	UnrestrictedServices []string `json:"unrestrictedServices,omitempty"`
 
+	// VpcServiceRestriction: Alpha. Configuration for within Perimeter
+	// allowed APIs.
+	VpcServiceRestriction *VpcServiceRestriction `json:"vpcServiceRestriction,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "AccessLevels") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -964,6 +1053,44 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// VpcServiceRestriction: Alpha. Specifies how APIs are allowed to
+// communicate within the Service
+// Perimeter.
+type VpcServiceRestriction struct {
+	// AllowedServices: The list of APIs usable within the Service
+	// Perimeter. Must be empty
+	// unless 'enable_restriction' is True.
+	AllowedServices []string `json:"allowedServices,omitempty"`
+
+	// EnableRestriction: Whether to restrict API calls within the Service
+	// Perimeter to the list of
+	// APIs specified in 'allowed_services'.
+	EnableRestriction bool `json:"enableRestriction,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowedServices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowedServices") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *VpcServiceRestriction) MarshalJSON() ([]byte, error) {
+	type NoMethod VpcServiceRestriction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // method id "accesscontextmanager.accessPolicies.create":
 
 type AccessPoliciesCreateCall struct {
diff --git a/adexchangebuyer/v1.3/adexchangebuyer-api.json b/adexchangebuyer/v1.3/adexchangebuyer-api.json
index 9c6260a..08e835e 100644
--- a/adexchangebuyer/v1.3/adexchangebuyer-api.json
+++ b/adexchangebuyer/v1.3/adexchangebuyer-api.json
@@ -15,7 +15,7 @@
   "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/_CyndOA4AbF54FgfrNcK2tPll_k\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/hcIsQyAOKgIG-XNmjJJ2qekVMV8\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -699,7 +699,7 @@
       }
     }
   },
-  "revision": "20180222",
+  "revision": "20190614",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -883,6 +883,21 @@
           "format": "int32",
           "type": "integer"
         },
+        "adTechnologyProviders": {
+          "properties": {
+            "detectedProviderIds": {
+              "items": {
+                "format": "int64",
+                "type": "string"
+              },
+              "type": "array"
+            },
+            "hasUnidentifiedProvider": {
+              "type": "boolean"
+            }
+          },
+          "type": "object"
+        },
         "advertiserId": {
           "description": "Detected advertiser id, if any. Read-only. This field should not be set in requests.",
           "items": {
@@ -1118,10 +1133,6 @@
               "description": "The app rating in the app store. Must be in the range [0-5].",
               "format": "double",
               "type": "number"
-            },
-            "store": {
-              "description": "The URL to the app store to purchase/download the promoted app.",
-              "type": "string"
             }
           },
           "type": "object"
diff --git a/adexchangebuyer/v1.3/adexchangebuyer-gen.go b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
index 46e9436..a52107a 100644
--- a/adexchangebuyer/v1.3/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
@@ -490,6 +490,8 @@
 	// AccountId: Account id.
 	AccountId int64 `json:"accountId,omitempty"`
 
+	AdTechnologyProviders *CreativeAdTechnologyProviders `json:"adTechnologyProviders,omitempty"`
+
 	// AdvertiserId: Detected advertiser id, if any. Read-only. This field
 	// should not be set in requests.
 	AdvertiserId googleapi.Int64s `json:"advertiserId,omitempty"`
@@ -606,6 +608,35 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type CreativeAdTechnologyProviders struct {
+	DetectedProviderIds googleapi.Int64s `json:"detectedProviderIds,omitempty"`
+
+	HasUnidentifiedProvider bool `json:"hasUnidentifiedProvider,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DetectedProviderIds")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DetectedProviderIds") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreativeAdTechnologyProviders) MarshalJSON() ([]byte, error) {
+	type NoMethod CreativeAdTechnologyProviders
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type CreativeCorrections struct {
 	// Details: Additional details about the correction.
 	Details []string `json:"details,omitempty"`
@@ -771,10 +802,6 @@
 	// [0-5].
 	StarRating float64 `json:"starRating,omitempty"`
 
-	// Store: The URL to the app store to purchase/download the promoted
-	// app.
-	Store string `json:"store,omitempty"`
-
 	// ForceSendFields is a list of field names (e.g. "Advertiser") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-api.json b/adexchangebuyer/v1.4/adexchangebuyer-api.json
index cb791dc..92a70f2 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-api.json
+++ b/adexchangebuyer/v1.4/adexchangebuyer-api.json
@@ -15,7 +15,7 @@
   "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/MJwOf3EG-7RF4hB9GZz8eDlZZS0\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/CMOrSNVn1gPVhDl3l-t_ud1epbY\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -1255,7 +1255,7 @@
       }
     }
   },
-  "revision": "20180823",
+  "revision": "20190614",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -1570,6 +1570,21 @@
           "description": "The link to the Ad Preferences page. This is only supported for native ads.",
           "type": "string"
         },
+        "adTechnologyProviders": {
+          "properties": {
+            "detectedProviderIds": {
+              "items": {
+                "format": "int64",
+                "type": "string"
+              },
+              "type": "array"
+            },
+            "hasUnidentifiedProvider": {
+              "type": "boolean"
+            }
+          },
+          "type": "object"
+        },
         "advertiserId": {
           "description": "Detected advertiser id, if any. Read-only. This field should not be set in requests.",
           "items": {
@@ -1847,10 +1862,6 @@
               "format": "double",
               "type": "number"
             },
-            "store": {
-              "description": "The URL to the app store to purchase/download the promoted app.",
-              "type": "string"
-            },
             "videoURL": {
               "description": "The URL of the XML VAST for a native ad. Note this is a separate field from resource.video_url.",
               "type": "string"
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-gen.go b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
index 13003c3..0c62cd3 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
@@ -820,6 +820,8 @@
 	// only supported for native ads.
 	AdChoicesDestinationUrl string `json:"adChoicesDestinationUrl,omitempty"`
 
+	AdTechnologyProviders *CreativeAdTechnologyProviders `json:"adTechnologyProviders,omitempty"`
+
 	// AdvertiserId: Detected advertiser id, if any. Read-only. This field
 	// should not be set in requests.
 	AdvertiserId googleapi.Int64s `json:"advertiserId,omitempty"`
@@ -981,6 +983,35 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type CreativeAdTechnologyProviders struct {
+	DetectedProviderIds googleapi.Int64s `json:"detectedProviderIds,omitempty"`
+
+	HasUnidentifiedProvider bool `json:"hasUnidentifiedProvider,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DetectedProviderIds")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DetectedProviderIds") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreativeAdTechnologyProviders) MarshalJSON() ([]byte, error) {
+	type NoMethod CreativeAdTechnologyProviders
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type CreativeCorrections struct {
 	// Contexts: All known serving contexts containing serving status
 	// information.
@@ -1165,10 +1196,6 @@
 	// [0-5].
 	StarRating float64 `json:"starRating,omitempty"`
 
-	// Store: The URL to the app store to purchase/download the promoted
-	// app.
-	Store string `json:"store,omitempty"`
-
 	// VideoURL: The URL of the XML VAST for a native ad. Note this is a
 	// separate field from resource.video_url.
 	VideoURL string `json:"videoURL,omitempty"`
diff --git a/androidpublisher/v1.1/androidpublisher-api.json b/androidpublisher/v1.1/androidpublisher-api.json
index 40133d5..a6d2c02 100644
--- a/androidpublisher/v1.1/androidpublisher-api.json
+++ b/androidpublisher/v1.1/androidpublisher-api.json
@@ -15,7 +15,7 @@
   "description": "Accesses Android application developers' Google Play accounts.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android-publisher",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/SlWD_44AAZzh33wX5EZhE-9oiU0\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/LNVDXWhUWjL42z9rVSE1bNdVBAQ\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -189,7 +189,7 @@
       }
     }
   },
-  "revision": "20190120",
+  "revision": "20190618",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "InappPurchase": {
@@ -215,7 +215,7 @@
           "type": "string"
         },
         "purchaseState": {
-          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled",
+          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled \n- Pending",
           "format": "int32",
           "type": "integer"
         },
diff --git a/androidpublisher/v1.1/androidpublisher-gen.go b/androidpublisher/v1.1/androidpublisher-gen.go
index aeb7746..eefe209 100644
--- a/androidpublisher/v1.1/androidpublisher-gen.go
+++ b/androidpublisher/v1.1/androidpublisher-gen.go
@@ -176,6 +176,7 @@
 	//
 	// - Purchased
 	// - Canceled
+	// - Pending
 	PurchaseState int64 `json:"purchaseState,omitempty"`
 
 	// PurchaseTime: The time the product was purchased, in milliseconds
diff --git a/androidpublisher/v2/androidpublisher-api.json b/androidpublisher/v2/androidpublisher-api.json
index 8d9ec70..82ac86f 100644
--- a/androidpublisher/v2/androidpublisher-api.json
+++ b/androidpublisher/v2/androidpublisher-api.json
@@ -15,7 +15,7 @@
   "description": "Accesses Android application developers' Google Play accounts.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android-publisher",
-  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/6wK1DQB5FQzTd770d7wHRHVlGb4\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/eA9uCYnVj_lGdL5C2QozYYgTfro\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -2483,7 +2483,7 @@
       }
     }
   },
-  "revision": "20190611",
+  "revision": "20190618",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Apk": {
@@ -3145,7 +3145,7 @@
           "type": "string"
         },
         "purchaseState": {
-          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled",
+          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled \n- Pending",
           "format": "int32",
           "type": "integer"
         },
@@ -3442,12 +3442,14 @@
       "id": "Testers",
       "properties": {
         "googleGroups": {
+          "description": "A list of all Google Groups, as email addresses, that define testers for this track.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "googlePlusCommunities": {
+          "description": "A list of all Google+ Communities, as URLs, that define testers for this track.",
           "items": {
             "type": "string"
           },
diff --git a/androidpublisher/v2/androidpublisher-gen.go b/androidpublisher/v2/androidpublisher-gen.go
index 3510aa8..b6498b0 100644
--- a/androidpublisher/v2/androidpublisher-gen.go
+++ b/androidpublisher/v2/androidpublisher-gen.go
@@ -1553,6 +1553,7 @@
 	//
 	// - Purchased
 	// - Canceled
+	// - Pending
 	PurchaseState int64 `json:"purchaseState,omitempty"`
 
 	// PurchaseTimeMillis: The time the product was purchased, in
@@ -2159,8 +2160,12 @@
 }
 
 type Testers struct {
+	// GoogleGroups: A list of all Google Groups, as email addresses, that
+	// define testers for this track.
 	GoogleGroups []string `json:"googleGroups,omitempty"`
 
+	// GooglePlusCommunities: A list of all Google+ Communities, as URLs,
+	// that define testers for this track.
 	GooglePlusCommunities []string `json:"googlePlusCommunities,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/androidpublisher/v3/androidpublisher-api.json b/androidpublisher/v3/androidpublisher-api.json
index eab8724..92e964b 100644
--- a/androidpublisher/v3/androidpublisher-api.json
+++ b/androidpublisher/v3/androidpublisher-api.json
@@ -15,7 +15,7 @@
   "description": "Accesses Android application developers' Google Play accounts.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android-publisher",
-  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/2JoGWl2Lc6WcpIEeif5Y8E05oy0\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/o45rfRykOnPFOs0ltSGyuwqNk98\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -2382,7 +2382,7 @@
       }
     }
   },
-  "revision": "20190611",
+  "revision": "20190618",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Apk": {
@@ -3066,7 +3066,7 @@
           "type": "string"
         },
         "purchaseState": {
-          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled",
+          "description": "The purchase state of the order. Possible values are:  \n- Purchased \n- Canceled \n- Pending",
           "format": "int32",
           "type": "integer"
         },
@@ -3393,12 +3393,14 @@
       "id": "Testers",
       "properties": {
         "googleGroups": {
+          "description": "A list of all Google Groups, as email addresses, that define testers for this track.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "googlePlusCommunities": {
+          "description": "A list of all Google+ Communities, as URLs, that define testers for this track.",
           "items": {
             "type": "string"
           },
diff --git a/androidpublisher/v3/androidpublisher-gen.go b/androidpublisher/v3/androidpublisher-gen.go
index 890b2e6..f446829 100644
--- a/androidpublisher/v3/androidpublisher-gen.go
+++ b/androidpublisher/v3/androidpublisher-gen.go
@@ -1595,6 +1595,7 @@
 	//
 	// - Purchased
 	// - Canceled
+	// - Pending
 	PurchaseState int64 `json:"purchaseState,omitempty"`
 
 	// PurchaseTimeMillis: The time the product was purchased, in
@@ -2271,8 +2272,12 @@
 }
 
 type Testers struct {
+	// GoogleGroups: A list of all Google Groups, as email addresses, that
+	// define testers for this track.
 	GoogleGroups []string `json:"googleGroups,omitempty"`
 
+	// GooglePlusCommunities: A list of all Google+ Communities, as URLs,
+	// that define testers for this track.
 	GooglePlusCommunities []string `json:"googlePlusCommunities,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/api-list.json b/api-list.json
index 4cfca94..b5acb72 100644
--- a/api-list.json
+++ b/api-list.json
@@ -1201,7 +1201,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://conversationai.github.io/",
+   "documentationLink": "https://github.com/conversationai/perspectiveapi/blob/master/README.md",
    "preferred": true
   },
   {
@@ -1603,7 +1603,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://cloud.google.com/dialogflow-enterprise/",
+   "documentationLink": "https://cloud.google.com/dialogflow/",
    "preferred": true
   },
   {
@@ -1618,7 +1618,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://cloud.google.com/dialogflow-enterprise/",
+   "documentationLink": "https://cloud.google.com/dialogflow/",
    "preferred": false
   },
   {
@@ -1874,6 +1874,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "firebase:v1beta1",
+   "name": "firebase",
+   "version": "v1beta1",
+   "title": "Firebase Management API",
+   "description": "The Firebase Management API enables programmatic setup and management of Firebase projects, including a project's Firebase resources and Firebase apps.",
+   "discoveryRestUrl": "https://firebase.googleapis.com/$discovery/rest?version=v1beta1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://firebase.google.com",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "firebasedynamiclinks:v1",
    "name": "firebasedynamiclinks",
    "version": "v1",
@@ -2536,6 +2551,36 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "osconfig:v1alpha1",
+   "name": "osconfig",
+   "version": "v1alpha1",
+   "title": "Cloud OS Config API",
+   "description": "Manages OS configurations for GCE VM instances.",
+   "discoveryRestUrl": "https://osconfig.googleapis.com/$discovery/rest?version=v1alpha1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "osconfig:v1alpha2",
+   "name": "osconfig",
+   "version": "v1alpha2",
+   "title": "Cloud OS Config API",
+   "description": "Manages OS configurations for GCE VM instances.",
+   "discoveryRestUrl": "https://osconfig.googleapis.com/$discovery/rest?version=v1alpha2",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "oslogin:v1alpha",
    "name": "oslogin",
    "version": "v1alpha",
@@ -2926,6 +2971,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "run:v1beta1",
+   "name": "run",
+   "version": "v1beta1",
+   "title": "Cloud Run API",
+   "description": "Deploy and manage user provided container images that scale automatically based on HTTP traffic.",
+   "discoveryRestUrl": "https://run.googleapis.com/$discovery/rest?version=v1beta1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/run/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "runtimeconfig:v1",
    "name": "runtimeconfig",
    "version": "v1",
diff --git a/bigquery/v2/bigquery-api.json b/bigquery/v2/bigquery-api.json
index 8efafc7..b78501b 100644
--- a/bigquery/v2/bigquery-api.json
+++ b/bigquery/v2/bigquery-api.json
@@ -1394,7 +1394,7 @@
       }
     }
   },
-  "revision": "20190609",
+  "revision": "20190616",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AggregateClassificationMetrics": {
@@ -1610,6 +1610,16 @@
       "description": "Confusion matrix for binary classification models.",
       "id": "BinaryConfusionMatrix",
       "properties": {
+        "accuracy": {
+          "description": "The fraction of predictions given the correct label.",
+          "format": "double",
+          "type": "number"
+        },
+        "f1Score": {
+          "description": "The equally weighted average of recall and precision.",
+          "format": "double",
+          "type": "number"
+        },
         "falseNegatives": {
           "description": "Number of false samples predicted as false.",
           "format": "int64",
@@ -1626,12 +1636,12 @@
           "type": "number"
         },
         "precision": {
-          "description": "Aggregate precision.",
+          "description": "The fraction of actual positive predictions that had positive actual\nlabels.",
           "format": "double",
           "type": "number"
         },
         "recall": {
-          "description": "Aggregate recall.",
+          "description": "The fraction of actual positive labels that were given a positive\nprediction.",
           "format": "double",
           "type": "number"
         },
@@ -2314,9 +2324,13 @@
           "description": "[Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS."
         },
         "hivePartitioningMode": {
-          "description": "[Optional, Experimental] If hive partitioning is enabled, which mode to use. Two modes are supported: - AUTO: automatically infer partition key name(s) and type(s). - STRINGS: automatic infer partition key name(s). All types are strings. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error.",
+          "description": "[Optional, Trusted Tester] If hive partitioning is enabled, which mode to use. Two modes are supported: - AUTO: automatically infer partition key name(s) and type(s). - STRINGS: automatic infer partition key name(s). All types are strings. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error. Note: this setting is in the process of being deprecated in favor of hivePartitioningOptions.",
           "type": "string"
         },
+        "hivePartitioningOptions": {
+          "$ref": "HivePartitioningOptions",
+          "description": "[Optional, Trusted Tester] Options to configure hive partitioning support."
+        },
         "ignoreUnknownValues": {
           "description": "[Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.",
           "type": "boolean"
@@ -2438,6 +2452,20 @@
       },
       "type": "object"
     },
+    "HivePartitioningOptions": {
+      "id": "HivePartitioningOptions",
+      "properties": {
+        "mode": {
+          "description": "[Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.",
+          "type": "string"
+        },
+        "sourceUriPrefix": {
+          "description": "[Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "IterationResult": {
       "description": "Information about a single iteration of the training run.",
       "id": "IterationResult",
@@ -2659,9 +2687,13 @@
           "type": "string"
         },
         "hivePartitioningMode": {
-          "description": "[Optional, Experimental] If hive partitioning is enabled, which mode to use. Two modes are supported: - AUTO: automatically infer partition key name(s) and type(s). - STRINGS: automatic infer partition key name(s). All types are strings. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error.",
+          "description": "[Optional, Trusted Tester] If hive partitioning is enabled, which mode to use. Two modes are supported: - AUTO: automatically infer partition key name(s) and type(s). - STRINGS: automatic infer partition key name(s). All types are strings. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error.",
           "type": "string"
         },
+        "hivePartitioningOptions": {
+          "$ref": "HivePartitioningOptions",
+          "description": "[Optional, Trusted Tester] Options to configure hive partitioning support."
+        },
         "ignoreUnknownValues": {
           "description": "[Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names",
           "type": "boolean"
diff --git a/bigquery/v2/bigquery-gen.go b/bigquery/v2/bigquery-gen.go
index 39c7121..7bcb883 100644
--- a/bigquery/v2/bigquery-gen.go
+++ b/bigquery/v2/bigquery-gen.go
@@ -646,6 +646,12 @@
 // BinaryConfusionMatrix: Confusion matrix for binary classification
 // models.
 type BinaryConfusionMatrix struct {
+	// Accuracy: The fraction of predictions given the correct label.
+	Accuracy float64 `json:"accuracy,omitempty"`
+
+	// F1Score: The equally weighted average of recall and precision.
+	F1Score float64 `json:"f1Score,omitempty"`
+
 	// FalseNegatives: Number of false samples predicted as false.
 	FalseNegatives int64 `json:"falseNegatives,omitempty,string"`
 
@@ -656,10 +662,14 @@
 	// the following metric.
 	PositiveClassThreshold float64 `json:"positiveClassThreshold,omitempty"`
 
-	// Precision: Aggregate precision.
+	// Precision: The fraction of actual positive predictions that had
+	// positive actual
+	// labels.
 	Precision float64 `json:"precision,omitempty"`
 
-	// Recall: Aggregate recall.
+	// Recall: The fraction of actual positive labels that were given a
+	// positive
+	// prediction.
 	Recall float64 `json:"recall,omitempty"`
 
 	// TrueNegatives: Number of true samples predicted as false.
@@ -668,7 +678,7 @@
 	// TruePositives: Number of true samples predicted as true.
 	TruePositives int64 `json:"truePositives,omitempty,string"`
 
-	// ForceSendFields is a list of field names (e.g. "FalseNegatives") to
+	// ForceSendFields is a list of field names (e.g. "Accuracy") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -676,13 +686,12 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "FalseNegatives") to
-	// include in API requests with the JSON null value. By default, fields
-	// with empty values are omitted from API requests. However, any field
-	// with an empty value appearing in NullFields will be sent to the
-	// server as null. It is an error if a field in this list has a
-	// non-empty value. This may be used to include null fields in Patch
-	// requests.
+	// NullFields is a list of field names (e.g. "Accuracy") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
 }
 
@@ -695,6 +704,8 @@
 func (s *BinaryConfusionMatrix) UnmarshalJSON(data []byte) error {
 	type NoMethod BinaryConfusionMatrix
 	var s1 struct {
+		Accuracy               gensupport.JSONFloat64 `json:"accuracy"`
+		F1Score                gensupport.JSONFloat64 `json:"f1Score"`
 		PositiveClassThreshold gensupport.JSONFloat64 `json:"positiveClassThreshold"`
 		Precision              gensupport.JSONFloat64 `json:"precision"`
 		Recall                 gensupport.JSONFloat64 `json:"recall"`
@@ -704,6 +715,8 @@
 	if err := json.Unmarshal(data, &s1); err != nil {
 		return err
 	}
+	s.Accuracy = float64(s1.Accuracy)
+	s.F1Score = float64(s1.F1Score)
 	s.PositiveClassThreshold = float64(s1.PositiveClassThreshold)
 	s.Precision = float64(s1.Precision)
 	s.Recall = float64(s1.Recall)
@@ -1840,14 +1853,20 @@
 	// set to GOOGLE_SHEETS.
 	GoogleSheetsOptions *GoogleSheetsOptions `json:"googleSheetsOptions,omitempty"`
 
-	// HivePartitioningMode: [Optional, Experimental] If hive partitioning
+	// HivePartitioningMode: [Optional, Trusted Tester] If hive partitioning
 	// is enabled, which mode to use. Two modes are supported: - AUTO:
 	// automatically infer partition key name(s) and type(s). - STRINGS:
 	// automatic infer partition key name(s). All types are strings. Not all
 	// storage formats support hive partitioning -- requesting hive
-	// partitioning on an unsupported format will lead to an error.
+	// partitioning on an unsupported format will lead to an error. Note:
+	// this setting is in the process of being deprecated in favor of
+	// hivePartitioningOptions.
 	HivePartitioningMode string `json:"hivePartitioningMode,omitempty"`
 
+	// HivePartitioningOptions: [Optional, Trusted Tester] Options to
+	// configure hive partitioning support.
+	HivePartitioningOptions *HivePartitioningOptions `json:"hivePartitioningOptions,omitempty"`
+
 	// IgnoreUnknownValues: [Optional] Indicates if BigQuery should allow
 	// extra values that are not represented in the table schema. If true,
 	// the extra values are ignored. If false, records with extra columns
@@ -2078,6 +2097,53 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type HivePartitioningOptions struct {
+	// Mode: [Optional, Trusted Tester] When set, what mode of hive
+	// partitioning to use when reading data. Two modes are supported. (1)
+	// AUTO: automatically infer partition key name(s) and type(s). (2)
+	// STRINGS: automatically infer partition key name(s). All types are
+	// interpreted as strings. Not all storage formats support hive
+	// partitioning. Requesting hive partitioning on an unsupported format
+	// will lead to an error. Currently supported types include: AVRO, CSV,
+	// JSON, ORC and Parquet.
+	Mode string `json:"mode,omitempty"`
+
+	// SourceUriPrefix: [Optional, Trusted Tester] When hive partition
+	// detection is requested, a common prefix for all source uris should be
+	// supplied. The prefix must end immediately before the partition key
+	// encoding begins. For example, consider files following this data
+	// layout.
+	// gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro
+	// gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro
+	// When hive partitioning is requested with either AUTO or STRINGS
+	// detection, the common prefix can be either of
+	// gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing
+	// slash does not matter).
+	SourceUriPrefix string `json:"sourceUriPrefix,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Mode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Mode") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HivePartitioningOptions) MarshalJSON() ([]byte, error) {
+	type NoMethod HivePartitioningOptions
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // IterationResult: Information about a single iteration of the training
 // run.
 type IterationResult struct {
@@ -2410,7 +2476,7 @@
 	// specify a tab separator. The default value is a comma (',').
 	FieldDelimiter string `json:"fieldDelimiter,omitempty"`
 
-	// HivePartitioningMode: [Optional, Experimental] If hive partitioning
+	// HivePartitioningMode: [Optional, Trusted Tester] If hive partitioning
 	// is enabled, which mode to use. Two modes are supported: - AUTO:
 	// automatically infer partition key name(s) and type(s). - STRINGS:
 	// automatic infer partition key name(s). All types are strings. Not all
@@ -2418,6 +2484,10 @@
 	// partitioning on an unsupported format will lead to an error.
 	HivePartitioningMode string `json:"hivePartitioningMode,omitempty"`
 
+	// HivePartitioningOptions: [Optional, Trusted Tester] Options to
+	// configure hive partitioning support.
+	HivePartitioningOptions *HivePartitioningOptions `json:"hivePartitioningOptions,omitempty"`
+
 	// IgnoreUnknownValues: [Optional] Indicates if BigQuery should allow
 	// extra values that are not represented in the table schema. If true,
 	// the extra values are ignored. If false, records with extra columns
diff --git a/cloudasset/v1/cloudasset-api.json b/cloudasset/v1/cloudasset-api.json
index 9b01b83..bcd93cf 100644
--- a/cloudasset/v1/cloudasset-api.json
+++ b/cloudasset/v1/cloudasset-api.json
@@ -219,7 +219,7 @@
       }
     }
   },
-  "revision": "20190501",
+  "revision": "20190615",
   "rootUrl": "https://cloudasset.googleapis.com/",
   "schemas": {
     "Asset": {
@@ -425,7 +425,7 @@
           "type": "object"
         },
         "name": {
-          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should be a resource name ending with `operations/{unique_id}`.",
           "type": "string"
         },
         "response": {
@@ -517,7 +517,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudasset/v1/cloudasset-gen.go b/cloudasset/v1/cloudasset-gen.go
index 8c638d8..1489571 100644
--- a/cloudasset/v1/cloudasset-gen.go
+++ b/cloudasset/v1/cloudasset-gen.go
@@ -657,7 +657,8 @@
 	// service that
 	// originally returns it. If you use the default HTTP mapping,
 	// the
-	// `name` should have the format of `operations/some/unique/name`.
+	// `name` should be a resource name ending with
+	// `operations/{unique_id}`.
 	Name string `json:"name,omitempty"`
 
 	// Response: The normal response of the operation in case of success.
@@ -922,81 +923,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/cloudasset/v1beta1/cloudasset-api.json b/cloudasset/v1beta1/cloudasset-api.json
index b365490..b4e6d75 100644
--- a/cloudasset/v1beta1/cloudasset-api.json
+++ b/cloudasset/v1beta1/cloudasset-api.json
@@ -400,7 +400,7 @@
       }
     }
   },
-  "revision": "20190501",
+  "revision": "20190615",
   "rootUrl": "https://cloudasset.googleapis.com/",
   "schemas": {
     "Asset": {
@@ -606,7 +606,7 @@
           "type": "object"
         },
         "name": {
-          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should be a resource name ending with `operations/{unique_id}`.",
           "type": "string"
         },
         "response": {
@@ -698,7 +698,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudasset/v1beta1/cloudasset-gen.go b/cloudasset/v1beta1/cloudasset-gen.go
index 07326a3..68a212c 100644
--- a/cloudasset/v1beta1/cloudasset-gen.go
+++ b/cloudasset/v1beta1/cloudasset-gen.go
@@ -702,7 +702,8 @@
 	// service that
 	// originally returns it. If you use the default HTTP mapping,
 	// the
-	// `name` should have the format of `operations/some/unique/name`.
+	// `name` should be a resource name ending with
+	// `operations/{unique_id}`.
 	Name string `json:"name,omitempty"`
 
 	// Response: The normal response of the operation in case of success.
@@ -967,81 +968,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/cloudfunctions/v1/cloudfunctions-api.json b/cloudfunctions/v1/cloudfunctions-api.json
index 7824838..7ef752c 100644
--- a/cloudfunctions/v1/cloudfunctions-api.json
+++ b/cloudfunctions/v1/cloudfunctions-api.json
@@ -539,7 +539,7 @@
       }
     }
   },
-  "revision": "20190529",
+  "revision": "20190607",
   "rootUrl": "https://cloudfunctions.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -1146,7 +1146,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudfunctions/v1/cloudfunctions-gen.go b/cloudfunctions/v1/cloudfunctions-gen.go
index 35d608f..7e91209 100644
--- a/cloudfunctions/v1/cloudfunctions-gen.go
+++ b/cloudfunctions/v1/cloudfunctions-gen.go
@@ -1530,81 +1530,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/cloudfunctions/v1beta2/cloudfunctions-api.json b/cloudfunctions/v1beta2/cloudfunctions-api.json
index e65de74..b85d7c3 100644
--- a/cloudfunctions/v1beta2/cloudfunctions-api.json
+++ b/cloudfunctions/v1beta2/cloudfunctions-api.json
@@ -452,7 +452,7 @@
       }
     }
   },
-  "revision": "20190508",
+  "revision": "20190607",
   "rootUrl": "https://cloudfunctions.googleapis.com/",
   "schemas": {
     "CallFunctionRequest": {
@@ -937,7 +937,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudfunctions/v1beta2/cloudfunctions-gen.go b/cloudfunctions/v1beta2/cloudfunctions-gen.go
index 2699a89..34b9fb8 100644
--- a/cloudfunctions/v1beta2/cloudfunctions-gen.go
+++ b/cloudfunctions/v1beta2/cloudfunctions-gen.go
@@ -1109,81 +1109,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/commentanalyzer/v1alpha1/commentanalyzer-api.json b/commentanalyzer/v1alpha1/commentanalyzer-api.json
index 0a7b031..85dfe0f 100644
--- a/commentanalyzer/v1alpha1/commentanalyzer-api.json
+++ b/commentanalyzer/v1alpha1/commentanalyzer-api.json
@@ -14,7 +14,7 @@
   "canonicalName": "Comment Analyzer",
   "description": "The Perspective Comment Analyzer API provides information about the potential impact of a comment on a conversation (e.g. it can provide a score for the \"toxicity\" of a comment). Users can leverage the \"SuggestCommentScore\" method to submit corrections to improve Perspective over time. Users can set the \"doNotStore\" flag to ensure that all submitted comments are automatically deleted after scores are returned.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://conversationai.github.io/",
+  "documentationLink": "https://github.com/conversationai/perspectiveapi/blob/master/README.md",
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -144,7 +144,7 @@
       }
     }
   },
-  "revision": "20190526",
+  "revision": "20190616",
   "rootUrl": "https://commentanalyzer.googleapis.com/",
   "schemas": {
     "AnalyzeCommentRequest": {
diff --git a/commentanalyzer/v1alpha1/commentanalyzer-gen.go b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
index 1963314..8a40b1b 100644
--- a/commentanalyzer/v1alpha1/commentanalyzer-gen.go
+++ b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
@@ -6,7 +6,7 @@
 
 // Package commentanalyzer provides access to the Perspective Comment Analyzer API.
 //
-// For product documentation, see: https://conversationai.github.io/
+// For product documentation, see: https://github.com/conversationai/perspectiveapi/blob/master/README.md
 //
 // Creating a client
 //
diff --git a/composer/v1/composer-api.json b/composer/v1/composer-api.json
index 0a742ed..56de304 100644
--- a/composer/v1/composer-api.json
+++ b/composer/v1/composer-api.json
@@ -400,7 +400,7 @@
       }
     }
   },
-  "revision": "20190514",
+  "revision": "20190613",
   "rootUrl": "https://composer.googleapis.com/",
   "schemas": {
     "Empty": {
@@ -752,7 +752,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/composer/v1/composer-gen.go b/composer/v1/composer-gen.go
index 111a6cb..123a68b 100644
--- a/composer/v1/composer-gen.go
+++ b/composer/v1/composer-gen.go
@@ -934,81 +934,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/composer/v1beta1/composer-api.json b/composer/v1beta1/composer-api.json
index 9b5f43f..6b351de 100644
--- a/composer/v1beta1/composer-api.json
+++ b/composer/v1beta1/composer-api.json
@@ -400,7 +400,7 @@
       }
     }
   },
-  "revision": "20190514",
+  "revision": "20190613",
   "rootUrl": "https://composer.googleapis.com/",
   "schemas": {
     "Empty": {
@@ -815,7 +815,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/composer/v1beta1/composer-gen.go b/composer/v1beta1/composer-gen.go
index fcb7a04..b3274f1 100644
--- a/composer/v1beta1/composer-gen.go
+++ b/composer/v1beta1/composer-gen.go
@@ -1131,81 +1131,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/dialogflow/v2/dialogflow-api.json b/dialogflow/v2/dialogflow-api.json
index 89b8c01..09df66d 100644
--- a/dialogflow/v2/dialogflow-api.json
+++ b/dialogflow/v2/dialogflow-api.json
@@ -17,7 +17,7 @@
   "canonicalName": "Dialogflow",
   "description": "Builds conversational interfaces (for example, chatbots, and voice-powered apps and devices).",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/dialogflow-enterprise/",
+  "documentationLink": "https://cloud.google.com/dialogflow/",
   "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
@@ -425,7 +425,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -485,7 +485,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -516,7 +516,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -558,7 +558,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -762,7 +762,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -831,7 +831,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -871,7 +871,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -922,7 +922,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1364,7 +1364,7 @@
       }
     }
   },
-  "revision": "20190610",
+  "revision": "20190616",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2Agent": {
@@ -1388,7 +1388,7 @@
           "type": "string"
         },
         "avatarUri": {
-          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web\nDemo](https://cloud.google.com/dialogflow-enterprise/docs/integrations/web-demo)\nintegration.",
+          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web\nDemo](https://cloud.google.com/dialogflow/docs/integrations/web-demo)\nintegration.",
           "type": "string"
         },
         "classificationThreshold": {
@@ -1397,7 +1397,7 @@
           "type": "number"
         },
         "defaultLanguageCode": {
-          "description": "Required. The default language of the agent as a language tag. See\n[Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. This field cannot be\nset by the `Update` method.",
+          "description": "Required. The default language of the agent as a language tag. See\n[Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. This field cannot be\nset by the `Update` method.",
           "type": "string"
         },
         "description": {
@@ -1472,7 +1472,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -1490,7 +1490,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -1536,7 +1536,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -1560,7 +1560,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -1610,7 +1610,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -1653,7 +1653,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -1796,7 +1796,7 @@
       "id": "GoogleCloudDialogflowV2EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -1886,7 +1886,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "modelVariant": {
@@ -1899,9 +1899,9 @@
           ],
           "enumDescriptions": [
             "No model variant specified. In this case Dialogflow defaults to\nUSE_BEST_AVAILABLE.",
-            "Use the best available variant of the Speech\nmodel that the caller is eligible for.\n\nPlease see the [Dialogflow\ndocs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging) for\nhow to make your project eligible for enhanced models.",
+            "Use the best available variant of the Speech\nmodel that the caller is eligible for.\n\nPlease see the [Dialogflow\ndocs](https://cloud.google.com/dialogflow/docs/data-logging) for\nhow to make your project eligible for enhanced models.",
             "Use standard model variant even if an enhanced model is available.  See the\n[Cloud Speech\ndocumentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\nfor details about enhanced models.",
-            "Use an enhanced model variant:\n\n* If an enhanced variant does not exist for the given\n  model and request language, Dialogflow falls\n  back to the standard variant.\n\n  The [Cloud Speech\n  documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\n  describes which models have enhanced variants.\n\n* If the API caller isn't eligible for enhanced models, Dialogflow returns\n  an error. Please see the [Dialogflow\n  docs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging)\n  for how to make your project eligible."
+            "Use an enhanced model variant:\n\n* If an enhanced variant does not exist for the given\n  model and request language, Dialogflow falls\n  back to the standard variant.\n\n  The [Cloud Speech\n  documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\n  describes which models have enhanced variants.\n\n* If the API caller isn't eligible for enhanced models, Dialogflow returns\n  an error. Please see the [Dialogflow\n  docs](https://cloud.google.com/dialogflow/docs/data-logging)\n  for how to make your project eligible."
           ],
           "type": "string"
         },
@@ -2512,7 +2512,7 @@
           "type": "string"
         },
         "prompts": {
-          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect value for the parameter.",
+          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect a value for the parameter.",
           "items": {
             "type": "string"
           },
@@ -2817,7 +2817,7 @@
           "type": "number"
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -3006,7 +3006,7 @@
       "id": "GoogleCloudDialogflowV2TextInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this conversational query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this conversational query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "text": {
@@ -3078,7 +3078,7 @@
       "properties": {
         "followupEventInput": {
           "$ref": "GoogleCloudDialogflowV2EventInput",
-          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input."
+          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input.\nWhen this field is set, Dialogflow ignores the `fulfillment_text`,\n`fulfillment_messages`, and `payload` fields."
         },
         "fulfillmentMessages": {
           "description": "Optional. The collection of rich messages to present to the user. This\nvalue is passed directly to `QueryResult.fulfillment_messages`.",
@@ -3159,7 +3159,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -3236,7 +3236,7 @@
       "id": "GoogleCloudDialogflowV2beta1EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -3909,7 +3909,7 @@
           "type": "string"
         },
         "prompts": {
-          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect value for the parameter.",
+          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect a value for the parameter.",
           "items": {
             "type": "string"
           },
@@ -4127,7 +4127,7 @@
           "description": "The result from Knowledge Connector (if any), ordered by decreasing\n`KnowledgeAnswers.match_confidence`."
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -4241,7 +4241,7 @@
         },
         "followupEventInput": {
           "$ref": "GoogleCloudDialogflowV2beta1EventInput",
-          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input."
+          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input.\nWhen this field is set, Dialogflow ignores the `fulfillment_text`,\n`fulfillment_messages`, and `payload` fields."
         },
         "fulfillmentMessages": {
           "description": "Optional. The collection of rich messages to present to the user. This\nvalue is passed directly to `QueryResult.fulfillment_messages`.",
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index 1067e44..2229127 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -8,7 +8,7 @@
 //
 // This package is DEPRECATED. Use package cloud.google.com/go/dialogflow/apiv2 instead.
 //
-// For product documentation, see: https://cloud.google.com/dialogflow-enterprise/
+// For product documentation, see: https://cloud.google.com/dialogflow/
 //
 // Creating a client
 //
@@ -266,8 +266,8 @@
 	// Avatars are used throughout the Dialogflow console and in the
 	// self-hosted
 	// [Web
-	// Demo](https://cloud.google.com/dialogflow-enterprise/
-	// docs/integrations/web-demo)
+	// Demo](https://cloud.google.com/dialogflow/docs/integr
+	// ations/web-demo)
 	// integration.
 	AvatarUri string `json:"avatarUri,omitempty"`
 
@@ -290,8 +290,8 @@
 	// language tag.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// for a list of the currently supported language codes. This field
 	// cannot be
 	// set by the `Update` method.
@@ -400,8 +400,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -445,8 +445,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -549,8 +549,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -603,8 +603,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -695,8 +695,8 @@
 	// is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-	// eference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/reference/la
+	// nguage)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -783,8 +783,8 @@
 	// this context.
 	// Refer to
 	// [this
-	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
-	// -actions-parameters)
+	// doc](https://cloud.google.com/dialogflow/docs/intents-actions-pa
+	// rameters)
 	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
@@ -1100,8 +1100,8 @@
 type GoogleCloudDialogflowV2EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -1331,8 +1331,8 @@
 	// Dialogflow does not do
 	// translations. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -1351,8 +1351,8 @@
 	//
 	// Please see the
 	// [Dialogflow
-	// docs](https://cloud.google.com/dialogflow-enterprise/docs/
-	// data-logging) for
+	// docs](https://cloud.google.com/dialogflow/docs/data-loggin
+	// g) for
 	// how to make your project eligible for enhanced models.
 	//   "USE_STANDARD" - Use standard model variant even if an enhanced
 	// model is available.  See the
@@ -1376,9 +1376,7 @@
 	// * If the API caller isn't eligible for enhanced models, Dialogflow
 	// returns
 	//   an error. Please see the [Dialogflow
-	//
-	// docs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging
-	// )
+	//   docs](https://cloud.google.com/dialogflow/docs/data-logging)
 	//   for how to make your project eligible.
 	ModelVariant string `json:"modelVariant,omitempty"`
 
@@ -2527,7 +2525,7 @@
 
 	// Prompts: Optional. The collection of prompts that the agent can
 	// present to the
-	// user in order to collect value for the parameter.
+	// user in order to collect a value for the parameter.
 	Prompts []string `json:"prompts,omitempty"`
 
 	// Value: Optional. The definition of the parameter value. It can be:
@@ -3134,8 +3132,8 @@
 	// detection.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -3621,8 +3619,8 @@
 	// LanguageCode: Required. The language of this conversational query.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -3772,6 +3770,9 @@
 	// FollowupEventInput: Optional. Makes the platform immediately invoke
 	// another `DetectIntent` call
 	// internally with the specified event as input.
+	// When this field is set, Dialogflow ignores the
+	// `fulfillment_text`,
+	// `fulfillment_messages`, and `payload` fields.
 	FollowupEventInput *GoogleCloudDialogflowV2EventInput `json:"followupEventInput,omitempty"`
 
 	// FulfillmentMessages: Optional. The collection of rich messages to
@@ -3938,8 +3939,8 @@
 	// this context.
 	// Refer to
 	// [this
-	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
-	// -actions-parameters)
+	// doc](https://cloud.google.com/dialogflow/docs/intents-actions-pa
+	// rameters)
 	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
@@ -4104,8 +4105,8 @@
 type GoogleCloudDialogflowV2beta1EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -5423,7 +5424,7 @@
 
 	// Prompts: Optional. The collection of prompts that the agent can
 	// present to the
-	// user in order to collect value for the parameter.
+	// user in order to collect a value for the parameter.
 	Prompts []string `json:"prompts,omitempty"`
 
 	// Value: Optional. The definition of the parameter value. It can be:
@@ -5862,8 +5863,8 @@
 	// detection.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -6119,6 +6120,9 @@
 	// FollowupEventInput: Optional. Makes the platform immediately invoke
 	// another `DetectIntent` call
 	// internally with the specified event as input.
+	// When this field is set, Dialogflow ignores the
+	// `fulfillment_text`,
+	// `fulfillment_messages`, and `payload` fields.
 	FollowupEventInput *GoogleCloudDialogflowV2beta1EventInput `json:"followupEventInput,omitempty"`
 
 	// FulfillmentMessages: Optional. The collection of rich messages to
@@ -7915,8 +7919,8 @@
 // specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8025,7 +8029,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8205,8 +8209,8 @@
 // the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8323,7 +8327,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8370,8 +8374,8 @@
 // the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8504,7 +8508,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8584,8 +8588,8 @@
 // specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8701,7 +8705,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -9487,8 +9491,8 @@
 // is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-// eference/language)
+// languages](https://cloud.google.com/dialogflow/docs/reference/la
+// nguage)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -9605,7 +9609,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -9797,8 +9801,8 @@
 // messages for. If not specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -9923,7 +9927,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -9981,8 +9985,8 @@
 // messages for. If not specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -10124,7 +10128,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -10216,8 +10220,8 @@
 // is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-// eference/language)
+// languages](https://cloud.google.com/dialogflow/docs/reference/la
+// nguage)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -10341,7 +10345,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/dialogflow/v2beta1/dialogflow-api.json b/dialogflow/v2beta1/dialogflow-api.json
index 10ec061..37857b9 100644
--- a/dialogflow/v2beta1/dialogflow-api.json
+++ b/dialogflow/v2beta1/dialogflow-api.json
@@ -17,7 +17,7 @@
   "canonicalName": "Dialogflow",
   "description": "Builds conversational interfaces (for example, chatbots, and voice-powered apps and devices).",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/dialogflow-enterprise/",
+  "documentationLink": "https://cloud.google.com/dialogflow/",
   "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
@@ -425,7 +425,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -485,7 +485,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -516,7 +516,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -558,7 +558,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -725,7 +725,7 @@
                           ],
                           "parameters": {
                             "session": {
-                              "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It’s up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
+                              "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It's up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
                               "location": "path",
                               "pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
                               "required": true,
@@ -1145,7 +1145,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1214,7 +1214,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1254,7 +1254,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1305,7 +1305,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1725,7 +1725,7 @@
                   ],
                   "parameters": {
                     "session": {
-                      "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It’s up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
+                      "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It's up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
                       "required": true,
@@ -2447,7 +2447,7 @@
       }
     }
   },
-  "revision": "20190610",
+  "revision": "20190616",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse": {
@@ -2496,7 +2496,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -2573,7 +2573,7 @@
       "id": "GoogleCloudDialogflowV2EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -3185,7 +3185,7 @@
           "type": "string"
         },
         "prompts": {
-          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect value for the parameter.",
+          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect a value for the parameter.",
           "items": {
             "type": "string"
           },
@@ -3322,7 +3322,7 @@
           "type": "number"
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -3425,7 +3425,7 @@
       "properties": {
         "followupEventInput": {
           "$ref": "GoogleCloudDialogflowV2EventInput",
-          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input."
+          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input.\nWhen this field is set, Dialogflow ignores the `fulfillment_text`,\n`fulfillment_messages`, and `payload` fields."
         },
         "fulfillmentMessages": {
           "description": "Optional. The collection of rich messages to present to the user. This\nvalue is passed directly to `QueryResult.fulfillment_messages`.",
@@ -3481,7 +3481,7 @@
           "type": "string"
         },
         "avatarUri": {
-          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web\nDemo](https://cloud.google.com/dialogflow-enterprise/docs/integrations/web-demo)\nintegration.",
+          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web\nDemo](https://cloud.google.com/dialogflow/docs/integrations/web-demo)\nintegration.",
           "type": "string"
         },
         "classificationThreshold": {
@@ -3490,7 +3490,7 @@
           "type": "number"
         },
         "defaultLanguageCode": {
-          "description": "Required. The default language of the agent as a language tag. See\n[Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. This field cannot be\nset by the `Update` method.",
+          "description": "Required. The default language of the agent as a language tag. See\n[Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. This field cannot be\nset by the `Update` method.",
           "type": "string"
         },
         "description": {
@@ -3565,7 +3565,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -3583,7 +3583,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -3629,7 +3629,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3653,7 +3653,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3703,7 +3703,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3746,7 +3746,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -3945,7 +3945,7 @@
       "id": "GoogleCloudDialogflowV2beta1EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -4039,7 +4039,7 @@
           "type": "boolean"
         },
         "languageCode": {
-          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "model": {
@@ -4056,9 +4056,9 @@
           ],
           "enumDescriptions": [
             "No model variant specified. In this case Dialogflow defaults to\nUSE_BEST_AVAILABLE.",
-            "Use the best available variant of the Speech\nmodel that the caller is eligible for.\n\nPlease see the [Dialogflow\ndocs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging) for\nhow to make your project eligible for enhanced models.",
+            "Use the best available variant of the Speech\nmodel that the caller is eligible for.\n\nPlease see the [Dialogflow\ndocs](https://cloud.google.com/dialogflow/docs/data-logging) for\nhow to make your project eligible for enhanced models.",
             "Use standard model variant even if an enhanced model is available.  See the\n[Cloud Speech\ndocumentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\nfor details about enhanced models.",
-            "Use an enhanced model variant:\n\n* If an enhanced variant does not exist for the given\n  model and request language, Dialogflow falls\n  back to the standard variant.\n\n  The [Cloud Speech\n  documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\n  describes which models have enhanced variants.\n\n* If the API caller isn't eligible for enhanced models, Dialogflow returns\n  an error.  Please see the [Dialogflow\n  docs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging)\n  for how to make your project eligible."
+            "Use an enhanced model variant:\n\n* If an enhanced variant does not exist for the given\n  model and request language, Dialogflow falls\n  back to the standard variant.\n\n  The [Cloud Speech\n  documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models)\n  describes which models have enhanced variants.\n\n* If the API caller isn't eligible for enhanced models, Dialogflow returns\n  an error.  Please see the [Dialogflow\n  docs](https://cloud.google.com/dialogflow/docs/data-logging)\n  for how to make your project eligible."
           ],
           "type": "string"
         },
@@ -4730,7 +4730,7 @@
           "type": "string"
         },
         "prompts": {
-          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect value for the parameter.",
+          "description": "Optional. The collection of prompts that the agent can present to the\nuser in order to collect a value for the parameter.",
           "items": {
             "type": "string"
           },
@@ -5174,7 +5174,7 @@
           "description": "The result from Knowledge Connector (if any), ordered by decreasing\n`KnowledgeAnswers.match_confidence`."
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -5369,7 +5369,7 @@
       "id": "GoogleCloudDialogflowV2beta1TextInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this conversational query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of this conversational query. See [Language\nSupport](https://cloud.google.com/dialogflow/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "text": {
@@ -5452,7 +5452,7 @@
         },
         "followupEventInput": {
           "$ref": "GoogleCloudDialogflowV2beta1EventInput",
-          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input."
+          "description": "Optional. Makes the platform immediately invoke another `DetectIntent` call\ninternally with the specified event as input.\nWhen this field is set, Dialogflow ignores the `fulfillment_text`,\n`fulfillment_messages`, and `payload` fields."
         },
         "fulfillmentMessages": {
           "description": "Optional. The collection of rich messages to present to the user. This\nvalue is passed directly to `QueryResult.fulfillment_messages`.",
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index dbac60b..eda26a2 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -8,7 +8,7 @@
 //
 // This package is DEPRECATED. Use package cloud.google.com/go/dialogflow/apiv2 instead.
 //
-// For product documentation, see: https://cloud.google.com/dialogflow-enterprise/
+// For product documentation, see: https://cloud.google.com/dialogflow/
 //
 // Creating a client
 //
@@ -436,8 +436,8 @@
 	// this context.
 	// Refer to
 	// [this
-	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
-	// -actions-parameters)
+	// doc](https://cloud.google.com/dialogflow/docs/intents-actions-pa
+	// rameters)
 	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
@@ -601,8 +601,8 @@
 type GoogleCloudDialogflowV2EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -1758,7 +1758,7 @@
 
 	// Prompts: Optional. The collection of prompts that the agent can
 	// present to the
-	// user in order to collect value for the parameter.
+	// user in order to collect a value for the parameter.
 	Prompts []string `json:"prompts,omitempty"`
 
 	// Value: Optional. The definition of the parameter value. It can be:
@@ -2037,8 +2037,8 @@
 	// detection.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -2283,6 +2283,9 @@
 	// FollowupEventInput: Optional. Makes the platform immediately invoke
 	// another `DetectIntent` call
 	// internally with the specified event as input.
+	// When this field is set, Dialogflow ignores the
+	// `fulfillment_text`,
+	// `fulfillment_messages`, and `payload` fields.
 	FollowupEventInput *GoogleCloudDialogflowV2EventInput `json:"followupEventInput,omitempty"`
 
 	// FulfillmentMessages: Optional. The collection of rich messages to
@@ -2379,8 +2382,8 @@
 	// Avatars are used throughout the Dialogflow console and in the
 	// self-hosted
 	// [Web
-	// Demo](https://cloud.google.com/dialogflow-enterprise/
-	// docs/integrations/web-demo)
+	// Demo](https://cloud.google.com/dialogflow/docs/integr
+	// ations/web-demo)
 	// integration.
 	AvatarUri string `json:"avatarUri,omitempty"`
 
@@ -2403,8 +2406,8 @@
 	// language tag.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// for a list of the currently supported language codes. This field
 	// cannot be
 	// set by the `Update` method.
@@ -2513,8 +2516,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -2558,8 +2561,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -2662,8 +2665,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -2716,8 +2719,8 @@
 	// specified, the agent's default language is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/
-	// docs/reference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/refere
+	// nce/language)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -2808,8 +2811,8 @@
 	// is
 	// used.
 	// [Many
-	// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-	// eference/language)
+	// languages](https://cloud.google.com/dialogflow/docs/reference/la
+	// nguage)
 	// are supported. Note: languages must be enabled in the agent before
 	// they can
 	// be used.
@@ -2904,8 +2907,8 @@
 	// this context.
 	// Refer to
 	// [this
-	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
-	// -actions-parameters)
+	// doc](https://cloud.google.com/dialogflow/docs/intents-actions-pa
+	// rameters)
 	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
@@ -3338,8 +3341,8 @@
 type GoogleCloudDialogflowV2beta1EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -3578,8 +3581,8 @@
 	// Dialogflow does not do
 	// translations. See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -3619,8 +3622,8 @@
 	//
 	// Please see the
 	// [Dialogflow
-	// docs](https://cloud.google.com/dialogflow-enterprise/docs/
-	// data-logging) for
+	// docs](https://cloud.google.com/dialogflow/docs/data-loggin
+	// g) for
 	// how to make your project eligible for enhanced models.
 	//   "USE_STANDARD" - Use standard model variant even if an enhanced
 	// model is available.  See the
@@ -3644,9 +3647,7 @@
 	// * If the API caller isn't eligible for enhanced models, Dialogflow
 	// returns
 	//   an error.  Please see the [Dialogflow
-	//
-	// docs](https://cloud.google.com/dialogflow-enterprise/docs/data-logging
-	// )
+	//   docs](https://cloud.google.com/dialogflow/docs/data-logging)
 	//   for how to make your project eligible.
 	ModelVariant string `json:"modelVariant,omitempty"`
 
@@ -4957,7 +4958,7 @@
 
 	// Prompts: Optional. The collection of prompts that the agent can
 	// present to the
-	// user in order to collect value for the parameter.
+	// user in order to collect a value for the parameter.
 	Prompts []string `json:"prompts,omitempty"`
 
 	// Value: Optional. The definition of the parameter value. It can be:
@@ -5855,8 +5856,8 @@
 	// detection.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -6354,8 +6355,8 @@
 	// LanguageCode: Required. The language of this conversational query.
 	// See
 	// [Language
-	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/language)
+	// Support](https://cloud.google.com/dialogflow/docs/reference/
+	// language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
@@ -6516,6 +6517,9 @@
 	// FollowupEventInput: Optional. Makes the platform immediately invoke
 	// another `DetectIntent` call
 	// internally with the specified event as input.
+	// When this field is set, Dialogflow ignores the
+	// `fulfillment_text`,
+	// `fulfillment_messages`, and `payload` fields.
 	FollowupEventInput *GoogleCloudDialogflowV2beta1EventInput `json:"followupEventInput,omitempty"`
 
 	// FulfillmentMessages: Optional. The collection of rich messages to
@@ -8318,8 +8322,8 @@
 // specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8428,7 +8432,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8608,8 +8612,8 @@
 // the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8726,7 +8730,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8773,8 +8777,8 @@
 // the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -8907,7 +8911,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8987,8 +8991,8 @@
 // specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -9104,7 +9108,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -9825,7 +9829,7 @@
 	//   ],
 	//   "parameters": {
 	//     "session": {
-	//       "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It’s up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
+	//       "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It's up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
 	//       "required": true,
@@ -11705,8 +11709,8 @@
 // is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-// eference/language)
+// languages](https://cloud.google.com/dialogflow/docs/reference/la
+// nguage)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -11824,7 +11828,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -12016,8 +12020,8 @@
 // messages for. If not specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -12143,7 +12147,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -12201,8 +12205,8 @@
 // messages for. If not specified, the agent's default language is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/
-// docs/reference/language)
+// languages](https://cloud.google.com/dialogflow/docs/refere
+// nce/language)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -12344,7 +12348,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -12436,8 +12440,8 @@
 // is
 // used.
 // [Many
-// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
-// eference/language)
+// languages](https://cloud.google.com/dialogflow/docs/reference/la
+// nguage)
 // are supported. Note: languages must be enabled in the agent before
 // they can
 // be used.
@@ -12562,7 +12566,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -14602,7 +14606,7 @@
 	//   ],
 	//   "parameters": {
 	//     "session": {
-	//       "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It’s up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
+	//       "description": "Required. The name of the session this query is sent to. Format:\n`projects/\u003cProject ID\u003e/agent/sessions/\u003cSession ID\u003e`, or\n`projects/\u003cProject ID\u003e/agent/environments/\u003cEnvironment ID\u003e/users/\u003cUser\nID\u003e/sessions/\u003cSession ID\u003e`. If `Environment ID` is not specified, we assume\ndefault 'draft' environment. If `User ID` is not specified, we are using\n\"-\". It's up to the API caller to choose an appropriate `Session ID` and\n`User Id`. They can be a random numbers or some type of user and session\nidentifiers (preferably hashed). The length of the `Session ID` and\n`User ID` must not exceed 36 characters.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
 	//       "required": true,
diff --git a/file/v1/file-api.json b/file/v1/file-api.json
index 7c991ec..a25a342 100644
--- a/file/v1/file-api.json
+++ b/file/v1/file-api.json
@@ -471,7 +471,7 @@
       }
     }
   },
-  "revision": "20190605",
+  "revision": "20190613",
   "rootUrl": "https://file.googleapis.com/",
   "schemas": {
     "CancelOperationRequest": {
@@ -604,6 +604,10 @@
       "description": "Maintenance schedule which is exposed to customer and potentially end user,\nindicating published upcoming future maintenance schedule",
       "id": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule",
       "properties": {
+        "canReschedule": {
+          "description": "Can this scheduled update be rescheduled?\nBy default, it's true and API needs to do explicitly check whether it's\nset, if it's set as false explicitly, it's false",
+          "type": "boolean"
+        },
         "endTime": {
           "description": "The scheduled end time for the maintenance.",
           "format": "google-datetime",
@@ -1032,7 +1036,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/file/v1/file-gen.go b/file/v1/file-gen.go
index d3a282f..e747cfe 100644
--- a/file/v1/file-gen.go
+++ b/file/v1/file-gen.go
@@ -436,13 +436,19 @@
 // user,
 // indicating published upcoming future maintenance schedule
 type GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule struct {
+	// CanReschedule: Can this scheduled update be rescheduled?
+	// By default, it's true and API needs to do explicitly check whether
+	// it's
+	// set, if it's set as false explicitly, it's false
+	CanReschedule bool `json:"canReschedule,omitempty"`
+
 	// EndTime: The scheduled end time for the maintenance.
 	EndTime string `json:"endTime,omitempty"`
 
 	// StartTime: The scheduled start time for the maintenance.
 	StartTime string `json:"startTime,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "EndTime") to
+	// ForceSendFields is a list of field names (e.g. "CanReschedule") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -450,10 +456,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "EndTime") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "CanReschedule") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
 	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
@@ -1228,81 +1234,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/file/v1beta1/file-api.json b/file/v1beta1/file-api.json
index 8d69fa8..753fe1b 100644
--- a/file/v1beta1/file-api.json
+++ b/file/v1beta1/file-api.json
@@ -471,7 +471,7 @@
       }
     }
   },
-  "revision": "20190605",
+  "revision": "20190613",
   "rootUrl": "https://file.googleapis.com/",
   "schemas": {
     "CancelOperationRequest": {
@@ -604,6 +604,10 @@
       "description": "Maintenance schedule which is exposed to customer and potentially end user,\nindicating published upcoming future maintenance schedule",
       "id": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule",
       "properties": {
+        "canReschedule": {
+          "description": "Can this scheduled update be rescheduled?\nBy default, it's true and API needs to do explicitly check whether it's\nset, if it's set as false explicitly, it's false",
+          "type": "boolean"
+        },
         "endTime": {
           "description": "The scheduled end time for the maintenance.",
           "format": "google-datetime",
@@ -1032,7 +1036,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/file/v1beta1/file-gen.go b/file/v1beta1/file-gen.go
index 3a7f24a..c6169fb 100644
--- a/file/v1beta1/file-gen.go
+++ b/file/v1beta1/file-gen.go
@@ -436,13 +436,19 @@
 // user,
 // indicating published upcoming future maintenance schedule
 type GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule struct {
+	// CanReschedule: Can this scheduled update be rescheduled?
+	// By default, it's true and API needs to do explicitly check whether
+	// it's
+	// set, if it's set as false explicitly, it's false
+	CanReschedule bool `json:"canReschedule,omitempty"`
+
 	// EndTime: The scheduled end time for the maintenance.
 	EndTime string `json:"endTime,omitempty"`
 
 	// StartTime: The scheduled start time for the maintenance.
 	StartTime string `json:"startTime,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "EndTime") to
+	// ForceSendFields is a list of field names (e.g. "CanReschedule") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -450,10 +456,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "EndTime") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "CanReschedule") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
 	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
@@ -1228,81 +1234,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/firebase/v1beta1/firebase-api.json b/firebase/v1beta1/firebase-api.json
new file mode 100644
index 0000000..5191e08
--- /dev/null
+++ b/firebase/v1beta1/firebase-api.json
@@ -0,0 +1,1528 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        },
+        "https://www.googleapis.com/auth/cloud-platform.read-only": {
+          "description": "View your data across Google Cloud Platform services"
+        },
+        "https://www.googleapis.com/auth/firebase": {
+          "description": "View and administer all your Firebase data and settings"
+        },
+        "https://www.googleapis.com/auth/firebase.readonly": {
+          "description": "View all your Firebase data and settings"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://firebase.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Firebase Management",
+  "description": "The Firebase Management API enables programmatic setup and management of Firebase projects, including a project's Firebase resources and Firebase apps.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://firebase.google.com",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "firebase:v1beta1",
+  "kind": "discovery#restDescription",
+  "name": "firebase",
+  "ownerDomain": "google.com",
+  "ownerName": "Google",
+  "parameters": {
+    "$.xgafv": {
+      "description": "V1 error format.",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "protocol": "rest",
+  "resources": {
+    "availableProjects": {
+      "methods": {
+        "list": {
+          "description": "Returns a list of [Google Cloud Platform (GCP) `Projects`]\n(https://cloud.google.com/resource-manager/reference/rest/v1/projects)\nthat are available to have Firebase resources added to them.\n\u003cbr\u003e\n\u003cbr\u003eA GCP `Project` will only be returned if:\n\u003col\u003e\n  \u003cli\u003e\u003cp\u003eThe caller has sufficient\n         [Google IAM](https://cloud.google.com/iam) permissions to call\n         AddFirebase.\u003c/p\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cp\u003eThe GCP `Project` is not already a FirebaseProject.\u003c/p\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cp\u003eThe GCP `Project` is not in an Organization which has policies\n         that prevent Firebase resources from being added.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e",
+          "flatPath": "v1beta1/availableProjects",
+          "httpMethod": "GET",
+          "id": "firebase.availableProjects.list",
+          "parameterOrder": [],
+          "parameters": {
+            "pageSize": {
+              "description": "The maximum number of GCP `Projects` to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "Token returned from a previous call to `ListAvailableProjects`\nindicating where in the set of GCP `Projects` to resume listing.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/availableProjects",
+          "response": {
+            "$ref": "ListAvailableProjectsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        }
+      }
+    },
+    "operations": {
+      "methods": {
+        "get": {
+          "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+          "flatPath": "v1beta1/operations/{operationsId}",
+          "httpMethod": "GET",
+          "id": "firebase.operations.get",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the operation resource.",
+              "location": "path",
+              "pattern": "^operations/.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+name}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        }
+      }
+    },
+    "projects": {
+      "methods": {
+        "addFirebase": {
+          "description": "Adds Firebase resources to the specified existing\n[Google Cloud Platform (GCP) `Project`]\n(https://cloud.google.com/resource-manager/reference/rest/v1/projects).\n\u003cbr\u003e\n\u003cbr\u003eSince a FirebaseProject is actually also a GCP `Project`, a\n`FirebaseProject` uses underlying GCP identifiers (most importantly,\nthe `projectId`) as its own for easy interop with GCP APIs.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an [`Operation`](../../v1beta1/operations).\nPoll the `Operation` to track the provisioning process by calling\nGetOperation until\n[`done`](../../v1beta1/operations#Operation.FIELDS.done) is `true`. When\n`done` is `true`, the `Operation` has either succeeded or failed. If the\n`Operation` succeeded, its\n[`response`](../../v1beta1/operations#Operation.FIELDS.response) is set to\na FirebaseProject; if the `Operation` failed, its\n[`error`](../../v1beta1/operations#Operation.FIELDS.error) is set to a\ngoogle.rpc.Status. The `Operation` is automatically deleted after\ncompletion, so there is no need to call\nDeleteOperation.\n\u003cbr\u003e\n\u003cbr\u003eThis method does not modify any billing account information on the\nunderlying GCP `Project`.\n\u003cbr\u003e\n\u003cbr\u003eAll fields listed in the [request body](#request-body) are required.\n\u003cbr\u003e\n\u003cbr\u003eTo call `AddFirebase`, a member must be an Editor or Owner for the\nexisting GCP `Project`. Service accounts cannot call `AddFirebase`.",
+          "flatPath": "v1beta1/projects/{projectsId}:addFirebase",
+          "httpMethod": "POST",
+          "id": "firebase.projects.addFirebase",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "project": {
+              "description": "The resource name of the GCP `Project` to which Firebase resources will be\nadded, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e\nAfter calling `AddFirebase`, the\n[`projectId`](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project.FIELDS.project_id)\nof the GCP `Project` is also the `projectId` of the FirebaseProject.",
+              "location": "path",
+              "pattern": "^projects/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+project}:addFirebase",
+          "request": {
+            "$ref": "AddFirebaseRequest"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/firebase"
+          ]
+        },
+        "get": {
+          "description": "Gets the FirebaseProject identified by the specified resource name.",
+          "flatPath": "v1beta1/projects/{projectsId}",
+          "httpMethod": "GET",
+          "id": "firebase.projects.get",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+              "location": "path",
+              "pattern": "^projects/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+name}",
+          "response": {
+            "$ref": "FirebaseProject"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        },
+        "getAdminSdkConfig": {
+          "description": "Gets the configuration artifact used by servers to simplify initialization.\n\u003cbr\u003e\n\u003cbr\u003eTypically, this configuration is used with the Firebase Admin SDK\n[initializeApp](https://firebase.google.com/docs/admin/setup#initialize_the_sdk)\ncommand.",
+          "flatPath": "v1beta1/projects/{projectsId}/adminSdkConfig",
+          "httpMethod": "GET",
+          "id": "firebase.projects.getAdminSdkConfig",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/adminSdkConfig\u003c/code\u003e",
+              "location": "path",
+              "pattern": "^projects/[^/]+/adminSdkConfig$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+name}",
+          "response": {
+            "$ref": "AdminSdkConfig"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        },
+        "list": {
+          "description": "Lists each FirebaseProject accessible to the caller.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but they will be a\nconsistent view of the Projects when additional requests are made with a\n`pageToken`.\n\u003cbr\u003e\n\u003cbr\u003eThis method is eventually consistent with Project mutations, which\nmeans newly provisioned Projects and recent modifications to existing\nProjects might not be reflected in the set of Projects. The list will\ninclude only ACTIVE Projects.\n\u003cbr\u003e\n\u003cbr\u003eUse\nGetFirebaseProject\nfor consistent reads as well as for additional Project details.",
+          "flatPath": "v1beta1/projects",
+          "httpMethod": "GET",
+          "id": "firebase.projects.list",
+          "parameterOrder": [],
+          "parameters": {
+            "pageSize": {
+              "description": "The maximum number of Projects to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "Token returned from a previous call to `ListFirebaseProjects` indicating\nwhere in the set of Projects to resume listing.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/projects",
+          "response": {
+            "$ref": "ListFirebaseProjectsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        },
+        "patch": {
+          "description": "Updates the attributes of the FirebaseProject identified by the\nspecified resource name.\n\u003cbr\u003e\n\u003cbr\u003eAll [query parameters](#query-parameters) are required.",
+          "flatPath": "v1beta1/projects/{projectsId}",
+          "httpMethod": "PATCH",
+          "id": "firebase.projects.patch",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+              "location": "path",
+              "pattern": "^projects/[^/]+$",
+              "required": true,
+              "type": "string"
+            },
+            "updateMask": {
+              "description": "Specifies which fields to update.\n\u003cbr\u003e\n\u003cbr\u003eIf this list is empty, then no state will be updated.\n\u003cbr\u003eNote that the fields `name`, `project_id`, and `project_number` are all\nimmutable.",
+              "format": "google-fieldmask",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+name}",
+          "request": {
+            "$ref": "FirebaseProject"
+          },
+          "response": {
+            "$ref": "FirebaseProject"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/firebase"
+          ]
+        },
+        "searchApps": {
+          "description": "A convenience method that lists all available Apps for the specified\nFirebaseProject.\n\u003cbr\u003e\n\u003cbr\u003eTypically, interaction with an App should be done using the\nplatform-specific service, but some tool use-cases require a summary of all\nknown Apps (such as for App selector interfaces).",
+          "flatPath": "v1beta1/projects/{projectsId}:searchApps",
+          "httpMethod": "GET",
+          "id": "firebase.projects.searchApps",
+          "parameterOrder": [
+            "parent"
+          ],
+          "parameters": {
+            "pageSize": {
+              "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "Token returned from a previous call to `SearchFirebaseApps` indicating\nwhere in the set of Apps to resume listing.",
+              "location": "query",
+              "type": "string"
+            },
+            "parent": {
+              "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+              "location": "path",
+              "pattern": "^projects/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/{+parent}:searchApps",
+          "response": {
+            "$ref": "SearchFirebaseAppsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only",
+            "https://www.googleapis.com/auth/firebase",
+            "https://www.googleapis.com/auth/firebase.readonly"
+          ]
+        }
+      },
+      "resources": {
+        "androidApps": {
+          "methods": {
+            "create": {
+              "description": "Requests that a new AndroidApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+              "flatPath": "v1beta1/projects/{projectsId}/androidApps",
+              "httpMethod": "POST",
+              "id": "firebase.projects.androidApps.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/androidApps",
+              "request": {
+                "$ref": "AndroidApp"
+              },
+              "response": {
+                "$ref": "Operation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            },
+            "get": {
+              "description": "Gets the AndroidApp identified by the specified resource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}",
+              "httpMethod": "GET",
+              "id": "firebase.projects.androidApps.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "AndroidApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "getConfig": {
+              "description": "Gets the configuration artifact associated with the specified\nAndroidApp.",
+              "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/config",
+              "httpMethod": "GET",
+              "id": "firebase.projects.androidApps.getConfig",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/androidApps/[^/]+/config$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "AndroidAppConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists each AndroidApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+              "flatPath": "v1beta1/projects/{projectsId}/androidApps",
+              "httpMethod": "GET",
+              "id": "firebase.projects.androidApps.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "pageSize": {
+                  "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token returned from a previous call to `ListAndroidApps` indicating where\nin the set of Apps to resume listing.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/androidApps",
+              "response": {
+                "$ref": "ListAndroidAppsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "patch": {
+              "description": "Updates the attributes of the AndroidApp identified by the specified\nresource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}",
+              "httpMethod": "PATCH",
+              "id": "firebase.projects.androidApps.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, `projectId`, and `packageName`\nare all immutable.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "AndroidApp"
+              },
+              "response": {
+                "$ref": "AndroidApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            }
+          },
+          "resources": {
+            "sha": {
+              "methods": {
+                "create": {
+                  "description": "Adds a SHA certificate to the specified AndroidApp.",
+                  "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha",
+                  "httpMethod": "POST",
+                  "id": "firebase.projects.androidApps.sha.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "The parent App to which a SHA certificate will be added, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+parent}/sha",
+                  "request": {
+                    "$ref": "ShaCertificate"
+                  },
+                  "response": {
+                    "$ref": "ShaCertificate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/firebase"
+                  ]
+                },
+                "delete": {
+                  "description": "Removes a SHA certificate from the specified AndroidApp.",
+                  "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha/{shaId}",
+                  "httpMethod": "DELETE",
+                  "id": "firebase.projects.androidApps.sha.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The fully qualified resource name of the `sha-key`, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e/sha/\u003cvar\u003eshaHash\u003c/var\u003e\u003c/code\u003e",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/androidApps/[^/]+/sha/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/firebase"
+                  ]
+                },
+                "list": {
+                  "description": "Returns the list of SHA-1 and SHA-256 certificates for the specified\nAndroidApp.",
+                  "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha",
+                  "httpMethod": "GET",
+                  "id": "firebase.projects.androidApps.sha.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "The parent App for which to list SHA certificates, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+parent}/sha",
+                  "response": {
+                    "$ref": "ListShaCertificatesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloud-platform.read-only",
+                    "https://www.googleapis.com/auth/firebase",
+                    "https://www.googleapis.com/auth/firebase.readonly"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "iosApps": {
+          "methods": {
+            "create": {
+              "description": "Requests that a new IosApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+              "flatPath": "v1beta1/projects/{projectsId}/iosApps",
+              "httpMethod": "POST",
+              "id": "firebase.projects.iosApps.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/iosApps",
+              "request": {
+                "$ref": "IosApp"
+              },
+              "response": {
+                "$ref": "Operation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            },
+            "get": {
+              "description": "Gets the IosApp identified by the specified resource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}",
+              "httpMethod": "GET",
+              "id": "firebase.projects.iosApps.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, in the format:\n\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/iosApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "IosApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "getConfig": {
+              "description": "Gets the configuration artifact associated with the specified IosApp.",
+              "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}/config",
+              "httpMethod": "GET",
+              "id": "firebase.projects.iosApps.getConfig",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/iosApps/[^/]+/config$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "IosAppConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists each IosApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+              "flatPath": "v1beta1/projects/{projectsId}/iosApps",
+              "httpMethod": "GET",
+              "id": "firebase.projects.iosApps.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "pageSize": {
+                  "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token returned from a previous call to `ListIosApps` indicating where in\nthe set of Apps to resume listing.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/iosApps",
+              "response": {
+                "$ref": "ListIosAppsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "patch": {
+              "description": "Updates the attributes of the IosApp identified by the specified\nresource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}",
+              "httpMethod": "PATCH",
+              "id": "firebase.projects.iosApps.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/iosApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, `projectId`, and `bundleId`\nare all immutable.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "IosApp"
+              },
+              "response": {
+                "$ref": "IosApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            }
+          }
+        },
+        "webApps": {
+          "methods": {
+            "create": {
+              "description": "Requests that a new WebApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+              "flatPath": "v1beta1/projects/{projectsId}/webApps",
+              "httpMethod": "POST",
+              "id": "firebase.projects.webApps.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/webApps",
+              "request": {
+                "$ref": "WebApp"
+              },
+              "response": {
+                "$ref": "Operation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            },
+            "get": {
+              "description": "Gets the WebApp identified by the specified resource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}",
+              "httpMethod": "GET",
+              "id": "firebase.projects.webApps.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/webApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "WebApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "getConfig": {
+              "description": "Gets the configuration artifact associated with the specified WebApp.",
+              "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}/config",
+              "httpMethod": "GET",
+              "id": "firebase.projects.webApps.getConfig",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/webApps/[^/]+/config$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "WebAppConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists each WebApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+              "flatPath": "v1beta1/projects/{projectsId}/webApps",
+              "httpMethod": "GET",
+              "id": "firebase.projects.webApps.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "pageSize": {
+                  "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token returned from a previous call to `ListWebApps` indicating where in\nthe set of Apps to resume listing.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/webApps",
+              "response": {
+                "$ref": "ListWebAppsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                "https://www.googleapis.com/auth/firebase",
+                "https://www.googleapis.com/auth/firebase.readonly"
+              ]
+            },
+            "patch": {
+              "description": "Updates the attributes of the WebApp identified by the specified\nresource name.",
+              "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}",
+              "httpMethod": "PATCH",
+              "id": "firebase.projects.webApps.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The fully qualified resource name of the App, for example:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/webApps/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, and `projectId` are all\nimmutable.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "WebApp"
+              },
+              "response": {
+                "$ref": "WebApp"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/firebase"
+              ]
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190618",
+  "rootUrl": "https://firebase.googleapis.com/",
+  "schemas": {
+    "AddFirebaseRequest": {
+      "description": "All fields are required.",
+      "id": "AddFirebaseRequest",
+      "properties": {
+        "locationId": {
+          "description": "Deprecated. Instead, call FinalizeDefaultLocation after you add\nFirebase services to your project.\n\u003cbr\u003e\n\u003cbr\u003eThe ID of the project's Cloud resource location. The location should be\none of the AppEngine locations defined here:\nhttps://cloud.google.com/appengine/docs/locations",
+          "type": "string"
+        },
+        "regionCode": {
+          "description": "The region code (CLDR) that the account will use for Firebase Analytics\ndata.\n\u003cbr\u003eFor example: US, GB, or DE\n\u003cbr\u003e\n\u003cbr\u003eIn Java, use `com.google.i18n.identifiers.RegionCode`.",
+          "type": "string"
+        },
+        "timeZone": {
+          "description": "The time zone that the account will use for Firebase Analytics data.\n\u003cbr\u003eFor example: America/Los_Angeles or Africa/Abidjan",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AdminSdkConfig": {
+      "id": "AdminSdkConfig",
+      "properties": {
+        "databaseURL": {
+          "description": "The default Firebase Realtime Database URL.",
+          "type": "string"
+        },
+        "locationId": {
+          "description": "The default resource location of other Firebase resources\n(such as Cloud Firestore).\n\u003cbr\u003eFor examples, see https://cloud.google.com/appengine/docs/locations.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "Immutable. The globally unique, user-assigned project ID of the parent\nProject.",
+          "type": "string"
+        },
+        "storageBucket": {
+          "description": "The default Cloud Storage for Firebase storage bucket name.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AndroidApp": {
+      "description": "Details of a Firebase App for Android.",
+      "id": "AndroidApp",
+      "properties": {
+        "appId": {
+          "description": "Immutable. The globally unique, Firebase-assigned identifier of the App.\n\u003cbr\u003e\n\u003cbr\u003eThis identifier should be treated as an opaque token, as the data\nformat is not specified.",
+          "type": "string"
+        },
+        "displayName": {
+          "description": "The user-assigned display name of the App.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        },
+        "packageName": {
+          "description": "The canonical package name of the Android App as would appear in the\nGoogle Play Developer Console.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "The globally unique, user-assigned ID of the parent Project for the App.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AndroidAppConfig": {
+      "description": "Configuration metadata of a single Firebase App for Android.",
+      "id": "AndroidAppConfig",
+      "properties": {
+        "configFileContents": {
+          "description": "The contents of the JSON configuration file.",
+          "format": "byte",
+          "type": "string"
+        },
+        "configFilename": {
+          "description": "The filename that the configuration artifact is typically saved as.\n\u003cbr\u003eFor example: `google-services.json`",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DefaultResources": {
+      "description": "The default resources associated with a `FirebaseProject`.",
+      "id": "DefaultResources",
+      "properties": {
+        "hostingSite": {
+          "description": "The default Firebase Hosting site name, in the format:\n\u003cbr\u003e\u003ccode\u003e\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eThough rare, your `projectId` might already be used as the name for an\nexisting Hosting site in another project (learn more about creating\nnon-default,\n[additional sites](https://firebase.google.com/docs/hosting/multisites)).\nIn these cases, your `projectId` is appended with a hyphen then five\nalphanumeric characters to create your default Hosting site name. For\nexample, if your `projectId` is `myproject123`, your default Hosting site\nname might be:\n\u003cbr\u003e\u003ccode\u003emyproject123-a5c16\u003c/code\u003e",
+          "type": "string"
+        },
+        "locationId": {
+          "description": "The default resource location of other Firebase resources, such as\nCloud Firestore. This field is omitted if the default resource location has\nnot been finalized yet.\n\u003cbr\u003eFor examples, see https://cloud.google.com/appengine/docs/locations.",
+          "type": "string"
+        },
+        "realtimeDatabaseInstance": {
+          "description": "The default Firebase Realtime Database instance name, in the format:\n\u003cbr\u003e\u003ccode\u003e\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eThough rare, your `projectId` might already be used as the name for an\nexisting Realtime Database instance in another project (learn more about\n[database\nsharding](https://firebase.google.com/docs/database/usage/sharding)). In\nthese cases, your `projectId` is appended with a hyphen then five\nalphanumeric characters to create your default Realtime Database instance\nname. For example, if your `projectId` is `myproject123`, your default\ndatabase instance name might be:\n\u003cbr\u003e\u003ccode\u003emyproject123-a5c16\u003c/code\u003e",
+          "type": "string"
+        },
+        "storageBucket": {
+          "description": "The default Cloud Storage for Firebase storage bucket, in the format:\n\u003cbr\u003e\u003ccode\u003e\u003cvar\u003eprojectId\u003c/var\u003e.appspot.com\u003c/code\u003e. This field is omitted\nif the default resource location has not been finalized yet.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Empty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "Empty",
+      "properties": {},
+      "type": "object"
+    },
+    "FirebaseAppInfo": {
+      "description": "A high-level summary of an App.",
+      "id": "FirebaseAppInfo",
+      "properties": {
+        "appId": {
+          "description": "Immutable. The globally unique, Firebase-assigned identifier of the App.\n\u003cbr\u003e\n\u003cbr\u003eThis identifier should be treated as an opaque token, as the data\nformat is not specified.",
+          "type": "string"
+        },
+        "displayName": {
+          "description": "The user-assigned display name of the Firebase App.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the Firebase App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\nor \u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\n\u003c/code\u003e",
+          "type": "string"
+        },
+        "platform": {
+          "description": "The platform of the Firebase App.",
+          "enum": [
+            "PLATFORM_UNSPECIFIED",
+            "IOS",
+            "ANDROID",
+            "WEB"
+          ],
+          "enumDescriptions": [
+            "Unknown state. This is only used for distinguishing unset values.",
+            "The Firebase App is associated with iOS.",
+            "The Firebase App is associated with Android.",
+            "The Firebase App is associated with web."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "FirebaseProject": {
+      "description": "A `FirebaseProject` is the top-level Firebase entity. It is the container for\nFirebase Apps, Firebase Hosting sites, storage systems (Firebase Realtime\nDatabase, Cloud Firestore, Cloud Storage buckets) and other Firebase and\nGoogle Cloud Platform (GCP) resources.\n\u003cbr\u003e\n\u003cbr\u003eYou can create a new `FirebaseProject` in the\n[Firebase console](https://console.firebase.google.com/),\nor you can add Firebase resources to an existing\n[GCP\n`Project`](https://cloud.google.com/resource-manager/reference/rest/v1/projects)\nby calling\nAddFirebase.\n\u003cbr\u003e\n\u003cbr\u003eA `FirebaseProject` is actually also a GCP `Project`, so a\n`FirebaseProject` uses underlying GCP identifiers (most importantly,\n`projectId`) as its own for easy interop with GCP APIs.",
+      "id": "FirebaseProject",
+      "properties": {
+        "displayName": {
+          "description": "The user-assigned display name of the Project.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "Immutable. The globally unique, user-assigned ID of the Project.",
+          "type": "string"
+        },
+        "projectNumber": {
+          "description": "The globally unique, Google-assigned identifier of the Project.",
+          "format": "int64",
+          "type": "string"
+        },
+        "resources": {
+          "$ref": "DefaultResources",
+          "description": "The default Firebase resources associated with the Project."
+        }
+      },
+      "type": "object"
+    },
+    "IosApp": {
+      "description": "Details of a Firebase App for iOS.",
+      "id": "IosApp",
+      "properties": {
+        "appId": {
+          "description": "Immutable. The globally unique, Firebase-assigned identifier of the App.\n\u003cbr\u003e\n\u003cbr\u003eThis identifier should be treated as an opaque token, as the data\nformat is not specified.",
+          "type": "string"
+        },
+        "appStoreId": {
+          "description": "The automatically generated Apple ID assigned to the App by Apple in the\niOS App Store.",
+          "type": "string"
+        },
+        "bundleId": {
+          "description": "The canonical bundle ID of the iOS App as it would appear in the iOS\nAppStore.",
+          "type": "string"
+        },
+        "displayName": {
+          "description": "The user-assigned display name of the App.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "The globally unique, user-assigned ID of the parent Project for the App.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "IosAppConfig": {
+      "description": "Configuration metadata of a single Firebase App for iOS.",
+      "id": "IosAppConfig",
+      "properties": {
+        "configFileContents": {
+          "description": "The content of the XML configuration file.",
+          "format": "byte",
+          "type": "string"
+        },
+        "configFilename": {
+          "description": "The filename that the configuration artifact is typically saved as.\n\u003cbr\u003eFor example: `GoogleService-Info.plist`",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListAndroidAppsResponse": {
+      "id": "ListAndroidAppsResponse",
+      "properties": {
+        "apps": {
+          "description": "List of each AndroidApp that is in the parent Firebase Project.",
+          "items": {
+            "$ref": "AndroidApp"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned. If the string is empty, then this response is the last page of\nresults.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent call to `ListAndroidApps` to\nfind the next group of Apps.\n\u003cbr\u003e\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListAvailableProjectsResponse": {
+      "id": "ListAvailableProjectsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned. If the string is empty, then this response is the last page of\nresults.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent calls to `ListAvailableProjects`\nto find the next group of GCP `Projects`.\n\u003cbr\u003e\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        },
+        "projectInfo": {
+          "description": "The list of GCP `Projects` which can have Firebase resources added to them.",
+          "items": {
+            "$ref": "ProjectInfo"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListFirebaseProjectsResponse": {
+      "id": "ListFirebaseProjectsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned. If the string is empty, then this response is the last page of\nresults.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent calls to `ListFirebaseProjects`\nto find the next group of Projects.\n\u003cbr\u003e\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        },
+        "results": {
+          "description": "One page of the list of Projects that are accessible to the caller.",
+          "items": {
+            "$ref": "FirebaseProject"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListIosAppsResponse": {
+      "id": "ListIosAppsResponse",
+      "properties": {
+        "apps": {
+          "description": "List of each IosApp that is in the parent Firebase Project.",
+          "items": {
+            "$ref": "IosApp"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned. If the string is empty, then this response is the last page of\nresults.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent call to `ListIosApps` to find\nthe next group of Apps.\n\u003cbr\u003e\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListShaCertificatesResponse": {
+      "id": "ListShaCertificatesResponse",
+      "properties": {
+        "certificates": {
+          "description": "The list of SHA certificates associated with the App.",
+          "items": {
+            "$ref": "ShaCertificate"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListWebAppsResponse": {
+      "id": "ListWebAppsResponse",
+      "properties": {
+        "apps": {
+          "description": "List of each WebApp that is in the parent Firebase Project.",
+          "items": {
+            "$ref": "WebApp"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned. If the string is empty, then this response is the last page of\nresults.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent call to `ListWebApps` to find\nthe next group of Apps.\n\u003cbr\u003e\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "MessageSet": {
+      "description": "This is proto2's version of MessageSet.",
+      "id": "MessageSet",
+      "properties": {},
+      "type": "object"
+    },
+    "Operation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "Operation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "Status",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should be a resource name ending with `operations/{unique_id}`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "ProjectInfo": {
+      "description": "A reference to a Google Cloud Platform (GCP) `Project`.",
+      "id": "ProjectInfo",
+      "properties": {
+        "displayName": {
+          "description": "The user-assigned display name of the GCP `Project`, for example:\n\u003ccode\u003eMy App\u003c/code\u003e",
+          "type": "string"
+        },
+        "locationId": {
+          "description": "The default resource location of other Firebase resources\n(such as Cloud Firestore).\n\u003cbr\u003eNot all projects will have this field populated. If it is\nnot populated, it means that the project is not yet associated with any\nregion. Consequently, a call to AddFirebase \u003cb\u003emust\u003c/b\u003e provide a location\nin this case.\n\u003cbr\u003eFor examples, see https://cloud.google.com/appengine/docs/locations.",
+          "type": "string"
+        },
+        "project": {
+          "description": "The resource name of the GCP `Project` to which Firebase resources can be\nadded, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SearchFirebaseAppsResponse": {
+      "id": "SearchFirebaseAppsResponse",
+      "properties": {
+        "apps": {
+          "description": "One page of results from a call to `SearchFirebaseApps`.",
+          "items": {
+            "$ref": "FirebaseAppInfo"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "If the result list is too large to fit in a single response, then a token\nis returned.\n\u003cbr\u003e\n\u003cbr\u003eThis token can be used in a subsequent calls to `SearchFirebaseApps`\nto find the next group of Apps.\n\u003cbr\u003eIf the string is empty, then this response is the last page of results.\n\u003cbr\u003ePage tokens are short-lived and should not be persisted.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ShaCertificate": {
+      "description": "A SHA-1 or SHA-256 certificate associated with the AndroidApp.",
+      "id": "ShaCertificate",
+      "properties": {
+        "certType": {
+          "description": "The SHA certificate type.",
+          "enum": [
+            "SHA_CERTIFICATE_TYPE_UNSPECIFIED",
+            "SHA_1",
+            "SHA_256"
+          ],
+          "enumDescriptions": [
+            "Unknown state.  This is only used for distinguishing unset values.",
+            "Certificate is a SHA-1 type certificate.",
+            "Certificate is a SHA-256 type certificate."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the `sha-key`, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e/sha/\u003cvar\u003eshaHash\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        },
+        "shaHash": {
+          "description": "The certificate hash for the App.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
+      "id": "Status",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "StatusProto": {
+      "description": "Wire-format for a Status object",
+      "id": "StatusProto",
+      "properties": {
+        "canonicalCode": {
+          "description": "The canonical error code (see codes.proto) that most closely\ncorresponds to this status. May be missing.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "code": {
+          "description": "Numeric code drawn from the space specified below. Often, this is the\ncanonical error space, and code is drawn from google3/util/task/codes.proto",
+          "format": "int32",
+          "type": "integer"
+        },
+        "message": {
+          "description": "Detail message",
+          "type": "string"
+        },
+        "messageSet": {
+          "$ref": "MessageSet",
+          "description": "message_set associates an arbitrary proto message with the status."
+        },
+        "payload": {
+          "$ref": "TypedMessage",
+          "description": "DEPRECATED.\n\nThis field was deprecated in 2011 with cl/20297133.  Java support\nfor the field was moved to a proto1 backward compatibility class\nin April 2017 with cl/142615857 and cl/154123203.  There was\nnever support for this field in Go; if set Go will ignore it.\nC++ stopped setting StatusProto::payload in October 2015 with cl/106347055,\nand stopped reading the field in October 2017 with cl/173324114.\n\nIn general, newly written code should use only \"message_set\". If you need\nto maintain backward compatibility with code written before 3/25/2011, do\nthe following:\n\n- During the transition period, either (1) set both \"payload\" and\n  \"message_set\", or (2) write the consumer of StatusProto so that it can\n  forge a MessageSet object from \"payload\" if \"message_set\" is missing.\n  The C++ util::Status implementation does (2).\n\n- Once all the consumers are converted to accept \"message_set\", then\n  remove the use of \"payload\" on the producer side."
+        },
+        "space": {
+          "description": "The following are usually only present when code != 0\nSpace to which this status belongs",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TypedMessage": {
+      "description": "Message that groups a protocol type_id (as defined by MessageSet),\nwith an encoded message of that type.  Its use is similar to\nMessageSet, except it represents a single (type, encoded message)\ninstead of a set.\n\nTo fill for known protocol type:\n  MyProtocolMsg proto;\n  TypedMessage typed_msg;\n  typed_msg.set_type_id(MyProtocolMsg::MESSAGE_TYPE_ID);\n  proto.AppendToCord(typed_msg.mutable_message());\n\nTo fill for unknown protocol type:\n  ProtocolMessage proto;\n  TypedMessage typed_msg;\n  typed_msg.set_type_id(proto.GetMapper()-\u003etype_id());\n  proto.AppendToCord(typed_msg.mutable_message());",
+      "id": "TypedMessage",
+      "properties": {
+        "message": {
+          "description": "Message bytes.",
+          "format": "byte",
+          "type": "string"
+        },
+        "typeId": {
+          "description": "Identifier for the type.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "WebApp": {
+      "description": "Details of a Firebase App for the web.",
+      "id": "WebApp",
+      "properties": {
+        "appId": {
+          "description": "Immutable. The globally unique, Firebase-assigned identifier of the App.\n\u003cbr\u003e\n\u003cbr\u003eThis identifier should be treated as an opaque token, as the data\nformat is not specified.",
+          "type": "string"
+        },
+        "appUrls": {
+          "description": "The fully qualified URLs where the App is hosted.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "displayName": {
+          "description": "The user-assigned display name of the App.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The fully qualified resource name of the App, for example:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "The globally unique, user-assigned ID of the parent Project for the App.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "WebAppConfig": {
+      "description": "Configuration metadata of a single Firebase App for the web.",
+      "id": "WebAppConfig",
+      "properties": {
+        "apiKey": {
+          "description": "The API key associated with the web App.",
+          "type": "string"
+        },
+        "appId": {
+          "description": "Immutable. The globally unique, Firebase-assigned identifier of the App.",
+          "type": "string"
+        },
+        "authDomain": {
+          "description": "The domain Firebase Auth configures for OAuth redirects, in the format:\n\u003cbr\u003e\u003ccode\u003e\u003cvar\u003eprojectId\u003c/var\u003e.firebaseapp.com\u003c/code\u003e",
+          "type": "string"
+        },
+        "databaseURL": {
+          "description": "The default Firebase Realtime Database URL.",
+          "type": "string"
+        },
+        "locationId": {
+          "description": "The default resource location of other Firebase resources\n(such as Cloud Firestore).\n\u003cbr\u003eFor examples, see https://cloud.google.com/appengine/docs/locations.",
+          "type": "string"
+        },
+        "messagingSenderId": {
+          "description": "The sender ID for use with Firebase Cloud Messaging.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "Immutable. The globally unique, user-assigned project ID of the parent\nProject for the App.",
+          "type": "string"
+        },
+        "storageBucket": {
+          "description": "The default Cloud Storage for Firebase storage bucket name.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Firebase Management API",
+  "version": "v1beta1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/firebase/v1beta1/firebase-gen.go b/firebase/v1beta1/firebase-gen.go
new file mode 100644
index 0000000..a184993
--- /dev/null
+++ b/firebase/v1beta1/firebase-gen.go
@@ -0,0 +1,5744 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package firebase provides access to the Firebase Management API.
+//
+// For product documentation, see: https://firebase.google.com
+//
+// Creating a client
+//
+// Usage example:
+//
+//   import "google.golang.org/api/firebase/v1beta1"
+//   ...
+//   ctx := context.Background()
+//   firebaseService, err := firebase.NewService(ctx)
+//
+// In this example, Google Application Default Credentials are used for authentication.
+//
+// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
+//
+// Other authentication options
+//
+// By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes:
+//
+//   firebaseService, err := firebase.NewService(ctx, option.WithScopes(firebase.FirebaseReadonlyScope))
+//
+// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
+//
+//   firebaseService, err := firebase.NewService(ctx, option.WithAPIKey("AIza..."))
+//
+// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
+//
+//   config := &oauth2.Config{...}
+//   // ...
+//   token, err := config.Exchange(ctx, ...)
+//   firebaseService, err := firebase.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
+//
+// See https://godoc.org/google.golang.org/api/option/ for details on options.
+package firebase // import "google.golang.org/api/firebase/v1beta1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	option "google.golang.org/api/option"
+	htransport "google.golang.org/api/transport/http"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "firebase:v1beta1"
+const apiName = "firebase"
+const apiVersion = "v1beta1"
+const basePath = "https://firebase.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+
+	// View your data across Google Cloud Platform services
+	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"
+
+	// View and administer all your Firebase data and settings
+	FirebaseScope = "https://www.googleapis.com/auth/firebase"
+
+	// View all your Firebase data and settings
+	FirebaseReadonlyScope = "https://www.googleapis.com/auth/firebase.readonly"
+)
+
+// NewService creates a new Service.
+func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
+	scopesOption := option.WithScopes(
+		"https://www.googleapis.com/auth/cloud-platform",
+		"https://www.googleapis.com/auth/cloud-platform.read-only",
+		"https://www.googleapis.com/auth/firebase",
+		"https://www.googleapis.com/auth/firebase.readonly",
+	)
+	// NOTE: prepend, so we don't override user-specified scopes.
+	opts = append([]option.ClientOption{scopesOption}, opts...)
+	client, endpoint, err := htransport.NewClient(ctx, opts...)
+	if err != nil {
+		return nil, err
+	}
+	s, err := New(client)
+	if err != nil {
+		return nil, err
+	}
+	if endpoint != "" {
+		s.BasePath = endpoint
+	}
+	return s, nil
+}
+
+// New creates a new Service. It uses the provided http.Client for requests.
+//
+// Deprecated: please use NewService instead.
+// To provide a custom HTTP client, use option.WithHTTPClient.
+// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.AvailableProjects = NewAvailableProjectsService(s)
+	s.Operations = NewOperationsService(s)
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	AvailableProjects *AvailableProjectsService
+
+	Operations *OperationsService
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewAvailableProjectsService(s *Service) *AvailableProjectsService {
+	rs := &AvailableProjectsService{s: s}
+	return rs
+}
+
+type AvailableProjectsService struct {
+	s *Service
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.AndroidApps = NewProjectsAndroidAppsService(s)
+	rs.IosApps = NewProjectsIosAppsService(s)
+	rs.WebApps = NewProjectsWebAppsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	AndroidApps *ProjectsAndroidAppsService
+
+	IosApps *ProjectsIosAppsService
+
+	WebApps *ProjectsWebAppsService
+}
+
+func NewProjectsAndroidAppsService(s *Service) *ProjectsAndroidAppsService {
+	rs := &ProjectsAndroidAppsService{s: s}
+	rs.Sha = NewProjectsAndroidAppsShaService(s)
+	return rs
+}
+
+type ProjectsAndroidAppsService struct {
+	s *Service
+
+	Sha *ProjectsAndroidAppsShaService
+}
+
+func NewProjectsAndroidAppsShaService(s *Service) *ProjectsAndroidAppsShaService {
+	rs := &ProjectsAndroidAppsShaService{s: s}
+	return rs
+}
+
+type ProjectsAndroidAppsShaService struct {
+	s *Service
+}
+
+func NewProjectsIosAppsService(s *Service) *ProjectsIosAppsService {
+	rs := &ProjectsIosAppsService{s: s}
+	return rs
+}
+
+type ProjectsIosAppsService struct {
+	s *Service
+}
+
+func NewProjectsWebAppsService(s *Service) *ProjectsWebAppsService {
+	rs := &ProjectsWebAppsService{s: s}
+	return rs
+}
+
+type ProjectsWebAppsService struct {
+	s *Service
+}
+
+// AddFirebaseRequest: All fields are required.
+type AddFirebaseRequest struct {
+	// LocationId: Deprecated. Instead, call FinalizeDefaultLocation after
+	// you add
+	// Firebase services to your project.
+	// <br>
+	// <br>The ID of the project's Cloud resource location. The location
+	// should be
+	// one of the AppEngine locations defined
+	// here:
+	// https://cloud.google.com/appengine/docs/locations
+	LocationId string `json:"locationId,omitempty"`
+
+	// RegionCode: The region code (CLDR) that the account will use for
+	// Firebase Analytics
+	// data.
+	// <br>For example: US, GB, or DE
+	// <br>
+	// <br>In Java, use `com.google.i18n.identifiers.RegionCode`.
+	RegionCode string `json:"regionCode,omitempty"`
+
+	// TimeZone: The time zone that the account will use for Firebase
+	// Analytics data.
+	// <br>For example: America/Los_Angeles or Africa/Abidjan
+	TimeZone string `json:"timeZone,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LocationId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "LocationId") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AddFirebaseRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod AddFirebaseRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type AdminSdkConfig struct {
+	// DatabaseURL: The default Firebase Realtime Database URL.
+	DatabaseURL string `json:"databaseURL,omitempty"`
+
+	// LocationId: The default resource location of other Firebase
+	// resources
+	// (such as Cloud Firestore).
+	// <br>For examples, see
+	// https://cloud.google.com/appengine/docs/locations.
+	LocationId string `json:"locationId,omitempty"`
+
+	// ProjectId: Immutable. The globally unique, user-assigned project ID
+	// of the parent
+	// Project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// StorageBucket: The default Cloud Storage for Firebase storage bucket
+	// name.
+	StorageBucket string `json:"storageBucket,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DatabaseURL") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DatabaseURL") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdminSdkConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AdminSdkConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AndroidApp: Details of a Firebase App for Android.
+type AndroidApp struct {
+	// AppId: Immutable. The globally unique, Firebase-assigned identifier
+	// of the App.
+	// <br>
+	// <br>This identifier should be treated as an opaque token, as the
+	// data
+	// format is not specified.
+	AppId string `json:"appId,omitempty"`
+
+	// DisplayName: The user-assigned display name of the App.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Name: The fully qualified resource name of the App, in the
+	// format:
+	// <br><code>projects/<var>projectId</var>/androidApps/<var>appId
+	// </var></code>
+	Name string `json:"name,omitempty"`
+
+	// PackageName: The canonical package name of the Android App as would
+	// appear in the
+	// Google Play Developer Console.
+	PackageName string `json:"packageName,omitempty"`
+
+	// ProjectId: The globally unique, user-assigned ID of the parent
+	// Project for the App.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AppId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AppId") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AndroidApp) MarshalJSON() ([]byte, error) {
+	type NoMethod AndroidApp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AndroidAppConfig: Configuration metadata of a single Firebase App for
+// Android.
+type AndroidAppConfig struct {
+	// ConfigFileContents: The contents of the JSON configuration file.
+	ConfigFileContents string `json:"configFileContents,omitempty"`
+
+	// ConfigFilename: The filename that the configuration artifact is
+	// typically saved as.
+	// <br>For example: `google-services.json`
+	ConfigFilename string `json:"configFilename,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ConfigFileContents")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ConfigFileContents") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AndroidAppConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AndroidAppConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DefaultResources: The default resources associated with a
+// `FirebaseProject`.
+type DefaultResources struct {
+	// HostingSite: The default Firebase Hosting site name, in the
+	// format:
+	// <br><code><var>projectId</var></code>
+	// <br>Though rare, your `projectId` might already be used as the name
+	// for an
+	// existing Hosting site in another project (learn more about
+	// creating
+	// non-default,
+	// [additional
+	// sites](https://firebase.google.com/docs/hosting/multisites)).
+	// In these cases, your `projectId` is appended with a hyphen then
+	// five
+	// alphanumeric characters to create your default Hosting site name.
+	// For
+	// example, if your `projectId` is `myproject123`, your default Hosting
+	// site
+	// name might be:
+	// <br><code>myproject123-a5c16</code>
+	HostingSite string `json:"hostingSite,omitempty"`
+
+	// LocationId: The default resource location of other Firebase
+	// resources, such as
+	// Cloud Firestore. This field is omitted if the default resource
+	// location has
+	// not been finalized yet.
+	// <br>For examples, see
+	// https://cloud.google.com/appengine/docs/locations.
+	LocationId string `json:"locationId,omitempty"`
+
+	// RealtimeDatabaseInstance: The default Firebase Realtime Database
+	// instance name, in the
+	// format:
+	// <br><code><var>projectId</var></code>
+	// <br>Though rare, your `projectId` might already be used as the name
+	// for an
+	// existing Realtime Database instance in another project (learn more
+	// about
+	// [database
+	// sharding](https://firebase.google.com/docs/database/us
+	// age/sharding)). In
+	// these cases, your `projectId` is appended with a hyphen then
+	// five
+	// alphanumeric characters to create your default Realtime Database
+	// instance
+	// name. For example, if your `projectId` is `myproject123`, your
+	// default
+	// database instance name might be:
+	// <br><code>myproject123-a5c16</code>
+	RealtimeDatabaseInstance string `json:"realtimeDatabaseInstance,omitempty"`
+
+	// StorageBucket: The default Cloud Storage for Firebase storage bucket,
+	// in the format:
+	// <br><code><var>projectId</var>.appspot.com</code>. This field is
+	// omitted
+	// if the default resource location has not been finalized yet.
+	StorageBucket string `json:"storageBucket,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HostingSite") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HostingSite") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DefaultResources) MarshalJSON() ([]byte, error) {
+	type NoMethod DefaultResources
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Empty: A generic empty message that you can re-use to avoid defining
+// duplicated
+// empty messages in your APIs. A typical example is to use it as the
+// request
+// or the response type of an API method. For instance:
+//
+//     service Foo {
+//       rpc Bar(google.protobuf.Empty) returns
+// (google.protobuf.Empty);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// FirebaseAppInfo: A high-level summary of an App.
+type FirebaseAppInfo struct {
+	// AppId: Immutable. The globally unique, Firebase-assigned identifier
+	// of the App.
+	// <br>
+	// <br>This identifier should be treated as an opaque token, as the
+	// data
+	// format is not specified.
+	AppId string `json:"appId,omitempty"`
+
+	// DisplayName: The user-assigned display name of the Firebase App.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Name: The fully qualified resource name of the Firebase App, in the
+	// format:
+	// <br><code>projects/<var>projectId</var>/iosApps/<var>appId</va
+	// r></code>
+	// or
+	// <br><code>projects/<var>projectId</var>/androidApps/<var>appId</var>
+	// <
+	// /code>
+	Name string `json:"name,omitempty"`
+
+	// Platform: The platform of the Firebase App.
+	//
+	// Possible values:
+	//   "PLATFORM_UNSPECIFIED" - Unknown state. This is only used for
+	// distinguishing unset values.
+	//   "IOS" - The Firebase App is associated with iOS.
+	//   "ANDROID" - The Firebase App is associated with Android.
+	//   "WEB" - The Firebase App is associated with web.
+	Platform string `json:"platform,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AppId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AppId") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *FirebaseAppInfo) MarshalJSON() ([]byte, error) {
+	type NoMethod FirebaseAppInfo
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FirebaseProject: A `FirebaseProject` is the top-level Firebase
+// entity. It is the container for
+// Firebase Apps, Firebase Hosting sites, storage systems (Firebase
+// Realtime
+// Database, Cloud Firestore, Cloud Storage buckets) and other Firebase
+// and
+// Google Cloud Platform (GCP) resources.
+// <br>
+// <br>You can create a new `FirebaseProject` in the
+// [Firebase console](https://console.firebase.google.com/),
+// or you can add Firebase resources to an
+// existing
+// [GCP
+// `Project`](https://cloud.google.com/resource-manager/ref
+// erence/rest/v1/projects)
+// by calling
+// AddFirebase.
+// <br>
+// <br>A `FirebaseProject` is actually also a GCP `Project`, so
+// a
+// `FirebaseProject` uses underlying GCP identifiers (most
+// importantly,
+// `projectId`) as its own for easy interop with GCP APIs.
+type FirebaseProject struct {
+	// DisplayName: The user-assigned display name of the Project.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Name: The fully qualified resource name of the Project, in the
+	// format:
+	// <br><code>projects/<var>projectId</var></code>
+	Name string `json:"name,omitempty"`
+
+	// ProjectId: Immutable. The globally unique, user-assigned ID of the
+	// Project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// ProjectNumber: The globally unique, Google-assigned identifier of the
+	// Project.
+	ProjectNumber int64 `json:"projectNumber,omitempty,string"`
+
+	// Resources: The default Firebase resources associated with the
+	// Project.
+	Resources *DefaultResources `json:"resources,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *FirebaseProject) MarshalJSON() ([]byte, error) {
+	type NoMethod FirebaseProject
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosApp: Details of a Firebase App for iOS.
+type IosApp struct {
+	// AppId: Immutable. The globally unique, Firebase-assigned identifier
+	// of the App.
+	// <br>
+	// <br>This identifier should be treated as an opaque token, as the
+	// data
+	// format is not specified.
+	AppId string `json:"appId,omitempty"`
+
+	// AppStoreId: The automatically generated Apple ID assigned to the App
+	// by Apple in the
+	// iOS App Store.
+	AppStoreId string `json:"appStoreId,omitempty"`
+
+	// BundleId: The canonical bundle ID of the iOS App as it would appear
+	// in the iOS
+	// AppStore.
+	BundleId string `json:"bundleId,omitempty"`
+
+	// DisplayName: The user-assigned display name of the App.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Name: The fully qualified resource name of the App, in the
+	// format:
+	// <br><code>projects/<var>projectId</var>/iosApps/<var>appId</va
+	// r></code>
+	Name string `json:"name,omitempty"`
+
+	// ProjectId: The globally unique, user-assigned ID of the parent
+	// Project for the App.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AppId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AppId") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosApp) MarshalJSON() ([]byte, error) {
+	type NoMethod IosApp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosAppConfig: Configuration metadata of a single Firebase App for
+// iOS.
+type IosAppConfig struct {
+	// ConfigFileContents: The content of the XML configuration file.
+	ConfigFileContents string `json:"configFileContents,omitempty"`
+
+	// ConfigFilename: The filename that the configuration artifact is
+	// typically saved as.
+	// <br>For example: `GoogleService-Info.plist`
+	ConfigFilename string `json:"configFilename,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ConfigFileContents")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ConfigFileContents") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosAppConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod IosAppConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListAndroidAppsResponse struct {
+	// Apps: List of each AndroidApp that is in the parent Firebase Project.
+	Apps []*AndroidApp `json:"apps,omitempty"`
+
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned. If the string is empty, then this response is the last
+	// page of
+	// results.
+	// <br>
+	// <br>This token can be used in a subsequent call to `ListAndroidApps`
+	// to
+	// find the next group of Apps.
+	// <br>
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Apps") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Apps") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListAndroidAppsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListAndroidAppsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListAvailableProjectsResponse struct {
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned. If the string is empty, then this response is the last
+	// page of
+	// results.
+	// <br>
+	// <br>This token can be used in a subsequent calls to
+	// `ListAvailableProjects`
+	// to find the next group of GCP `Projects`.
+	// <br>
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ProjectInfo: The list of GCP `Projects` which can have Firebase
+	// resources added to them.
+	ProjectInfo []*ProjectInfo `json:"projectInfo,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListAvailableProjectsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListAvailableProjectsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListFirebaseProjectsResponse struct {
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned. If the string is empty, then this response is the last
+	// page of
+	// results.
+	// <br>
+	// <br>This token can be used in a subsequent calls to
+	// `ListFirebaseProjects`
+	// to find the next group of Projects.
+	// <br>
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Results: One page of the list of Projects that are accessible to the
+	// caller.
+	Results []*FirebaseProject `json:"results,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListFirebaseProjectsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListFirebaseProjectsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListIosAppsResponse struct {
+	// Apps: List of each IosApp that is in the parent Firebase Project.
+	Apps []*IosApp `json:"apps,omitempty"`
+
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned. If the string is empty, then this response is the last
+	// page of
+	// results.
+	// <br>
+	// <br>This token can be used in a subsequent call to `ListIosApps` to
+	// find
+	// the next group of Apps.
+	// <br>
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Apps") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Apps") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListIosAppsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListIosAppsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListShaCertificatesResponse struct {
+	// Certificates: The list of SHA certificates associated with the App.
+	Certificates []*ShaCertificate `json:"certificates,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Certificates") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Certificates") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListShaCertificatesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListShaCertificatesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ListWebAppsResponse struct {
+	// Apps: List of each WebApp that is in the parent Firebase Project.
+	Apps []*WebApp `json:"apps,omitempty"`
+
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned. If the string is empty, then this response is the last
+	// page of
+	// results.
+	// <br>
+	// <br>This token can be used in a subsequent call to `ListWebApps` to
+	// find
+	// the next group of Apps.
+	// <br>
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Apps") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Apps") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListWebAppsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListWebAppsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// MessageSet: This is proto2's version of MessageSet.
+type MessageSet struct {
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a
+// network API call.
+type Operation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If `true`, the operation is completed, and either `error` or
+	// `response` is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *Status `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping,
+	// the
+	// `name` should be a resource name ending with
+	// `operations/{unique_id}`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Done") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type NoMethod Operation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ProjectInfo: A reference to a Google Cloud Platform (GCP) `Project`.
+type ProjectInfo struct {
+	// DisplayName: The user-assigned display name of the GCP `Project`, for
+	// example:
+	// <code>My App</code>
+	DisplayName string `json:"displayName,omitempty"`
+
+	// LocationId: The default resource location of other Firebase
+	// resources
+	// (such as Cloud Firestore).
+	// <br>Not all projects will have this field populated. If it is
+	// not populated, it means that the project is not yet associated with
+	// any
+	// region. Consequently, a call to AddFirebase <b>must</b> provide a
+	// location
+	// in this case.
+	// <br>For examples, see
+	// https://cloud.google.com/appengine/docs/locations.
+	LocationId string `json:"locationId,omitempty"`
+
+	// Project: The resource name of the GCP `Project` to which Firebase
+	// resources can be
+	// added, in the format:
+	// <br><code>projects/<var>projectId</var></code>
+	Project string `json:"project,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ProjectInfo) MarshalJSON() ([]byte, error) {
+	type NoMethod ProjectInfo
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SearchFirebaseAppsResponse struct {
+	// Apps: One page of results from a call to `SearchFirebaseApps`.
+	Apps []*FirebaseAppInfo `json:"apps,omitempty"`
+
+	// NextPageToken: If the result list is too large to fit in a single
+	// response, then a token
+	// is returned.
+	// <br>
+	// <br>This token can be used in a subsequent calls to
+	// `SearchFirebaseApps`
+	// to find the next group of Apps.
+	// <br>If the string is empty, then this response is the last page of
+	// results.
+	// <br>Page tokens are short-lived and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Apps") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Apps") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SearchFirebaseAppsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod SearchFirebaseAppsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ShaCertificate: A SHA-1 or SHA-256 certificate associated with the
+// AndroidApp.
+type ShaCertificate struct {
+	// CertType: The SHA certificate type.
+	//
+	// Possible values:
+	//   "SHA_CERTIFICATE_TYPE_UNSPECIFIED" - Unknown state.  This is only
+	// used for distinguishing unset values.
+	//   "SHA_1" - Certificate is a SHA-1 type certificate.
+	//   "SHA_256" - Certificate is a SHA-256 type certificate.
+	CertType string `json:"certType,omitempty"`
+
+	// Name: The fully qualified resource name of the `sha-key`, in the
+	// format:
+	// <br><code>projects/<var>projectId</var>/androidApps/<var>appId
+	// </var>/sha/<var>shaHash</var></code>
+	Name string `json:"name,omitempty"`
+
+	// ShaHash: The certificate hash for the App.
+	ShaHash string `json:"shaHash,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CertType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CertType") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ShaCertificate) MarshalJSON() ([]byte, error) {
+	type NoMethod ShaCertificate
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Status: The `Status` type defines a logical error model that is
+// suitable for
+// different programming environments, including REST APIs and RPC APIs.
+// It is
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
+//
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type NoMethod Status
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// StatusProto: Wire-format for a Status object
+type StatusProto struct {
+	// CanonicalCode: The canonical error code (see codes.proto) that most
+	// closely
+	// corresponds to this status. May be missing.
+	CanonicalCode int64 `json:"canonicalCode,omitempty"`
+
+	// Code: Numeric code drawn from the space specified below. Often, this
+	// is the
+	// canonical error space, and code is drawn from
+	// google3/util/task/codes.proto
+	Code int64 `json:"code,omitempty"`
+
+	// Message: Detail message
+	Message string `json:"message,omitempty"`
+
+	// MessageSet: message_set associates an arbitrary proto message with
+	// the status.
+	MessageSet *MessageSet `json:"messageSet,omitempty"`
+
+	// Payload: DEPRECATED.
+	//
+	// This field was deprecated in 2011 with cl/20297133.  Java support
+	// for the field was moved to a proto1 backward compatibility class
+	// in April 2017 with cl/142615857 and cl/154123203.  There was
+	// never support for this field in Go; if set Go will ignore it.
+	// C++ stopped setting StatusProto::payload in October 2015 with
+	// cl/106347055,
+	// and stopped reading the field in October 2017 with cl/173324114.
+	//
+	// In general, newly written code should use only "message_set". If you
+	// need
+	// to maintain backward compatibility with code written before
+	// 3/25/2011, do
+	// the following:
+	//
+	// - During the transition period, either (1) set both "payload" and
+	//   "message_set", or (2) write the consumer of StatusProto so that it
+	// can
+	//   forge a MessageSet object from "payload" if "message_set" is
+	// missing.
+	//   The C++ util::Status implementation does (2).
+	//
+	// - Once all the consumers are converted to accept "message_set", then
+	//   remove the use of "payload" on the producer side.
+	Payload *TypedMessage `json:"payload,omitempty"`
+
+	// Space: The following are usually only present when code != 0
+	// Space to which this status belongs
+	Space string `json:"space,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CanonicalCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CanonicalCode") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *StatusProto) MarshalJSON() ([]byte, error) {
+	type NoMethod StatusProto
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TypedMessage: Message that groups a protocol type_id (as defined by
+// MessageSet),
+// with an encoded message of that type.  Its use is similar
+// to
+// MessageSet, except it represents a single (type, encoded
+// message)
+// instead of a set.
+//
+// To fill for known protocol type:
+//   MyProtocolMsg proto;
+//   TypedMessage typed_msg;
+//   typed_msg.set_type_id(MyProtocolMsg::MESSAGE_TYPE_ID);
+//   proto.AppendToCord(typed_msg.mutable_message());
+//
+// To fill for unknown protocol type:
+//   ProtocolMessage proto;
+//   TypedMessage typed_msg;
+//   typed_msg.set_type_id(proto.GetMapper()->type_id());
+//   proto.AppendToCord(typed_msg.mutable_message());
+type TypedMessage struct {
+	// Message: Message bytes.
+	Message string `json:"message,omitempty"`
+
+	// TypeId: Identifier for the type.
+	TypeId int64 `json:"typeId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Message") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Message") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TypedMessage) MarshalJSON() ([]byte, error) {
+	type NoMethod TypedMessage
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// WebApp: Details of a Firebase App for the web.
+type WebApp struct {
+	// AppId: Immutable. The globally unique, Firebase-assigned identifier
+	// of the App.
+	// <br>
+	// <br>This identifier should be treated as an opaque token, as the
+	// data
+	// format is not specified.
+	AppId string `json:"appId,omitempty"`
+
+	// AppUrls: The fully qualified URLs where the App is hosted.
+	AppUrls []string `json:"appUrls,omitempty"`
+
+	// DisplayName: The user-assigned display name of the App.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Name: The fully qualified resource name of the App, for
+	// example:
+	// <br><code>projects/<var>projectId</var>/webApps/<var>appId</v
+	// ar></code>
+	Name string `json:"name,omitempty"`
+
+	// ProjectId: The globally unique, user-assigned ID of the parent
+	// Project for the App.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AppId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AppId") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *WebApp) MarshalJSON() ([]byte, error) {
+	type NoMethod WebApp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// WebAppConfig: Configuration metadata of a single Firebase App for the
+// web.
+type WebAppConfig struct {
+	// ApiKey: The API key associated with the web App.
+	ApiKey string `json:"apiKey,omitempty"`
+
+	// AppId: Immutable. The globally unique, Firebase-assigned identifier
+	// of the App.
+	AppId string `json:"appId,omitempty"`
+
+	// AuthDomain: The domain Firebase Auth configures for OAuth redirects,
+	// in the format:
+	// <br><code><var>projectId</var>.firebaseapp.com</code>
+	AuthDomain string `json:"authDomain,omitempty"`
+
+	// DatabaseURL: The default Firebase Realtime Database URL.
+	DatabaseURL string `json:"databaseURL,omitempty"`
+
+	// LocationId: The default resource location of other Firebase
+	// resources
+	// (such as Cloud Firestore).
+	// <br>For examples, see
+	// https://cloud.google.com/appengine/docs/locations.
+	LocationId string `json:"locationId,omitempty"`
+
+	// MessagingSenderId: The sender ID for use with Firebase Cloud
+	// Messaging.
+	MessagingSenderId string `json:"messagingSenderId,omitempty"`
+
+	// ProjectId: Immutable. The globally unique, user-assigned project ID
+	// of the parent
+	// Project for the App.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// StorageBucket: The default Cloud Storage for Firebase storage bucket
+	// name.
+	StorageBucket string `json:"storageBucket,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ApiKey") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ApiKey") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *WebAppConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod WebAppConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "firebase.availableProjects.list":
+
+type AvailableProjectsListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Returns a list of [Google Cloud Platform (GCP)
+// `Projects`]
+// (https://cloud.google.com/resource-manager/reference/rest/
+// v1/projects)
+// that are available to have Firebase resources added to
+// them.
+// <br>
+// <br>A GCP `Project` will only be returned if:
+// <ol>
+//   <li><p>The caller has sufficient
+//          [Google IAM](https://cloud.google.com/iam) permissions to
+// call
+//          AddFirebase.</p></li>
+//   <li><p>The GCP `Project` is not already a
+// FirebaseProject.</p></li>
+//   <li><p>The GCP `Project` is not in an Organization which has
+// policies
+//          that prevent Firebase resources from being
+// added.</p></li>
+// </ol>
+func (r *AvailableProjectsService) List() *AvailableProjectsListCall {
+	c := &AvailableProjectsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of GCP `Projects` to return in the response.
+// <br>
+// <br>The server may return fewer than this value at its discretion.
+// If no value is specified (or too large a value is specified), the
+// server
+// will impose its own limit.
+// <br>
+// <br>This value cannot be negative.
+func (c *AvailableProjectsListCall) PageSize(pageSize int64) *AvailableProjectsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `ListAvailableProjects`
+// indicating where in the set of GCP `Projects` to resume listing.
+func (c *AvailableProjectsListCall) PageToken(pageToken string) *AvailableProjectsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AvailableProjectsListCall) Fields(s ...googleapi.Field) *AvailableProjectsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AvailableProjectsListCall) IfNoneMatch(entityTag string) *AvailableProjectsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AvailableProjectsListCall) Context(ctx context.Context) *AvailableProjectsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AvailableProjectsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AvailableProjectsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/availableProjects")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.availableProjects.list" call.
+// Exactly one of *ListAvailableProjectsResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListAvailableProjectsResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AvailableProjectsListCall) Do(opts ...googleapi.CallOption) (*ListAvailableProjectsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListAvailableProjectsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns a list of [Google Cloud Platform (GCP) `Projects`]\n(https://cloud.google.com/resource-manager/reference/rest/v1/projects)\nthat are available to have Firebase resources added to them.\n\u003cbr\u003e\n\u003cbr\u003eA GCP `Project` will only be returned if:\n\u003col\u003e\n  \u003cli\u003e\u003cp\u003eThe caller has sufficient\n         [Google IAM](https://cloud.google.com/iam) permissions to call\n         AddFirebase.\u003c/p\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cp\u003eThe GCP `Project` is not already a FirebaseProject.\u003c/p\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cp\u003eThe GCP `Project` is not in an Organization which has policies\n         that prevent Firebase resources from being added.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e",
+	//   "flatPath": "v1beta1/availableProjects",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.availableProjects.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of GCP `Projects` to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `ListAvailableProjects`\nindicating where in the set of GCP `Projects` to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/availableProjects",
+	//   "response": {
+	//     "$ref": "ListAvailableProjectsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AvailableProjectsListCall) Pages(ctx context.Context, f func(*ListAvailableProjectsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.operations.get":
+
+type OperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *OperationsService) Get(name string) *OperationsGetCall {
+	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *OperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1beta1/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^operations/.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.addFirebase":
+
+type ProjectsAddFirebaseCall struct {
+	s                  *Service
+	project            string
+	addfirebaserequest *AddFirebaseRequest
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+	header_            http.Header
+}
+
+// AddFirebase: Adds Firebase resources to the specified
+// existing
+// [Google Cloud Platform (GCP)
+// `Project`]
+// (https://cloud.google.com/resource-manager/reference/rest/v
+// 1/projects).
+// <br>
+// <br>Since a FirebaseProject is actually also a GCP `Project`,
+// a
+// `FirebaseProject` uses underlying GCP identifiers (most
+// importantly,
+// the `projectId`) as its own for easy interop with GCP
+// APIs.
+// <br>
+// <br>The result of this call is an
+// [`Operation`](../../v1beta1/operations).
+// Poll the `Operation` to track the provisioning process by
+// calling
+// GetOperation
+// until
+// [`done`](../../v1beta1/operations#Operation.FIELDS.done) is `true`.
+// When
+// `done` is `true`, the `Operation` has either succeeded or failed. If
+// the
+// `Operation` succeeded,
+// its
+// [`response`](../../v1beta1/operations#Operation.FIELDS.response) is
+// set to
+// a FirebaseProject; if the `Operation` failed,
+// its
+// [`error`](../../v1beta1/operations#Operation.FIELDS.error) is set to
+// a
+// google.rpc.Status. The `Operation` is automatically deleted
+// after
+// completion, so there is no need to
+// call
+// DeleteOperation.
+// <br>
+// <br>This method does not modify any billing account information on
+// the
+// underlying GCP `Project`.
+// <br>
+// <br>All fields listed in the [request body](#request-body) are
+// required.
+// <br>
+// <br>To call `AddFirebase`, a member must be an Editor or Owner for
+// the
+// existing GCP `Project`. Service accounts cannot call `AddFirebase`.
+func (r *ProjectsService) AddFirebase(project string, addfirebaserequest *AddFirebaseRequest) *ProjectsAddFirebaseCall {
+	c := &ProjectsAddFirebaseCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.addfirebaserequest = addfirebaserequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAddFirebaseCall) Fields(s ...googleapi.Field) *ProjectsAddFirebaseCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAddFirebaseCall) Context(ctx context.Context) *ProjectsAddFirebaseCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAddFirebaseCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAddFirebaseCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.addfirebaserequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+project}:addFirebase")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.addFirebase" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsAddFirebaseCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Adds Firebase resources to the specified existing\n[Google Cloud Platform (GCP) `Project`]\n(https://cloud.google.com/resource-manager/reference/rest/v1/projects).\n\u003cbr\u003e\n\u003cbr\u003eSince a FirebaseProject is actually also a GCP `Project`, a\n`FirebaseProject` uses underlying GCP identifiers (most importantly,\nthe `projectId`) as its own for easy interop with GCP APIs.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an [`Operation`](../../v1beta1/operations).\nPoll the `Operation` to track the provisioning process by calling\nGetOperation until\n[`done`](../../v1beta1/operations#Operation.FIELDS.done) is `true`. When\n`done` is `true`, the `Operation` has either succeeded or failed. If the\n`Operation` succeeded, its\n[`response`](../../v1beta1/operations#Operation.FIELDS.response) is set to\na FirebaseProject; if the `Operation` failed, its\n[`error`](../../v1beta1/operations#Operation.FIELDS.error) is set to a\ngoogle.rpc.Status. The `Operation` is automatically deleted after\ncompletion, so there is no need to call\nDeleteOperation.\n\u003cbr\u003e\n\u003cbr\u003eThis method does not modify any billing account information on the\nunderlying GCP `Project`.\n\u003cbr\u003e\n\u003cbr\u003eAll fields listed in the [request body](#request-body) are required.\n\u003cbr\u003e\n\u003cbr\u003eTo call `AddFirebase`, a member must be an Editor or Owner for the\nexisting GCP `Project`. Service accounts cannot call `AddFirebase`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}:addFirebase",
+	//   "httpMethod": "POST",
+	//   "id": "firebase.projects.addFirebase",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "The resource name of the GCP `Project` to which Firebase resources will be\nadded, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e\nAfter calling `AddFirebase`, the\n[`projectId`](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project.FIELDS.project_id)\nof the GCP `Project` is also the `projectId` of the FirebaseProject.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+project}:addFirebase",
+	//   "request": {
+	//     "$ref": "AddFirebaseRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.get":
+
+type ProjectsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the FirebaseProject identified by the specified resource
+// name.
+func (r *ProjectsService) Get(name string) *ProjectsGetCall {
+	c := &ProjectsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsGetCall) Fields(s ...googleapi.Field) *ProjectsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsGetCall) IfNoneMatch(entityTag string) *ProjectsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsGetCall) Context(ctx context.Context) *ProjectsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.get" call.
+// Exactly one of *FirebaseProject or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *FirebaseProject.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsGetCall) Do(opts ...googleapi.CallOption) (*FirebaseProject, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FirebaseProject{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the FirebaseProject identified by the specified resource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "FirebaseProject"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.getAdminSdkConfig":
+
+type ProjectsGetAdminSdkConfigCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetAdminSdkConfig: Gets the configuration artifact used by servers to
+// simplify initialization.
+// <br>
+// <br>Typically, this configuration is used with the Firebase Admin
+// SDK
+// [initializeApp](https://firebase.google.com/docs/admin/setup#initi
+// alize_the_sdk)
+// command.
+func (r *ProjectsService) GetAdminSdkConfig(name string) *ProjectsGetAdminSdkConfigCall {
+	c := &ProjectsGetAdminSdkConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsGetAdminSdkConfigCall) Fields(s ...googleapi.Field) *ProjectsGetAdminSdkConfigCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsGetAdminSdkConfigCall) IfNoneMatch(entityTag string) *ProjectsGetAdminSdkConfigCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsGetAdminSdkConfigCall) Context(ctx context.Context) *ProjectsGetAdminSdkConfigCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsGetAdminSdkConfigCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsGetAdminSdkConfigCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.getAdminSdkConfig" call.
+// Exactly one of *AdminSdkConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdminSdkConfig.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsGetAdminSdkConfigCall) Do(opts ...googleapi.CallOption) (*AdminSdkConfig, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdminSdkConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the configuration artifact used by servers to simplify initialization.\n\u003cbr\u003e\n\u003cbr\u003eTypically, this configuration is used with the Firebase Admin SDK\n[initializeApp](https://firebase.google.com/docs/admin/setup#initialize_the_sdk)\ncommand.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/adminSdkConfig",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.getAdminSdkConfig",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/adminSdkConfig\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/adminSdkConfig$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "AdminSdkConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.list":
+
+type ProjectsListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists each FirebaseProject accessible to the
+// caller.
+// <br>
+// <br>The elements are returned in no particular order, but they will
+// be a
+// consistent view of the Projects when additional requests are made
+// with a
+// `pageToken`.
+// <br>
+// <br>This method is eventually consistent with Project mutations,
+// which
+// means newly provisioned Projects and recent modifications to
+// existing
+// Projects might not be reflected in the set of Projects. The list
+// will
+// include only ACTIVE Projects.
+// <br>
+// <br>Use
+// GetFirebaseProject
+// for consistent reads as well as for additional Project details.
+func (r *ProjectsService) List() *ProjectsListCall {
+	c := &ProjectsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Projects to return in the response.
+// <br>
+// <br>The server may return fewer than this at its discretion.
+// If no value is specified (or too large a value is specified), the
+// server
+// will impose its own limit.
+// <br>
+// <br>This value cannot be negative.
+func (c *ProjectsListCall) PageSize(pageSize int64) *ProjectsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `ListFirebaseProjects` indicating
+// where in the set of Projects to resume listing.
+func (c *ProjectsListCall) PageToken(pageToken string) *ProjectsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsListCall) Fields(s ...googleapi.Field) *ProjectsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsListCall) IfNoneMatch(entityTag string) *ProjectsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsListCall) Context(ctx context.Context) *ProjectsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.list" call.
+// Exactly one of *ListFirebaseProjectsResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListFirebaseProjectsResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsListCall) Do(opts ...googleapi.CallOption) (*ListFirebaseProjectsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListFirebaseProjectsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists each FirebaseProject accessible to the caller.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but they will be a\nconsistent view of the Projects when additional requests are made with a\n`pageToken`.\n\u003cbr\u003e\n\u003cbr\u003eThis method is eventually consistent with Project mutations, which\nmeans newly provisioned Projects and recent modifications to existing\nProjects might not be reflected in the set of Projects. The list will\ninclude only ACTIVE Projects.\n\u003cbr\u003e\n\u003cbr\u003eUse\nGetFirebaseProject\nfor consistent reads as well as for additional Project details.",
+	//   "flatPath": "v1beta1/projects",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of Projects to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `ListFirebaseProjects` indicating\nwhere in the set of Projects to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/projects",
+	//   "response": {
+	//     "$ref": "ListFirebaseProjectsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsListCall) Pages(ctx context.Context, f func(*ListFirebaseProjectsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.projects.patch":
+
+type ProjectsPatchCall struct {
+	s               *Service
+	name            string
+	firebaseproject *FirebaseProject
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+	header_         http.Header
+}
+
+// Patch: Updates the attributes of the FirebaseProject identified by
+// the
+// specified resource name.
+// <br>
+// <br>All [query parameters](#query-parameters) are required.
+func (r *ProjectsService) Patch(name string, firebaseproject *FirebaseProject) *ProjectsPatchCall {
+	c := &ProjectsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.firebaseproject = firebaseproject
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Specifies which
+// fields to update.
+// <br>
+// <br>If this list is empty, then no state will be updated.
+// <br>Note that the fields `name`, `project_id`, and `project_number`
+// are all
+// immutable.
+func (c *ProjectsPatchCall) UpdateMask(updateMask string) *ProjectsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsPatchCall) Fields(s ...googleapi.Field) *ProjectsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsPatchCall) Context(ctx context.Context) *ProjectsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.firebaseproject)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.patch" call.
+// Exactly one of *FirebaseProject or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *FirebaseProject.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsPatchCall) Do(opts ...googleapi.CallOption) (*FirebaseProject, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FirebaseProject{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the attributes of the FirebaseProject identified by the\nspecified resource name.\n\u003cbr\u003e\n\u003cbr\u003eAll [query parameters](#query-parameters) are required.",
+	//   "flatPath": "v1beta1/projects/{projectsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "firebase.projects.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the Project, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Specifies which fields to update.\n\u003cbr\u003e\n\u003cbr\u003eIf this list is empty, then no state will be updated.\n\u003cbr\u003eNote that the fields `name`, `project_id`, and `project_number` are all\nimmutable.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "FirebaseProject"
+	//   },
+	//   "response": {
+	//     "$ref": "FirebaseProject"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.searchApps":
+
+type ProjectsSearchAppsCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// SearchApps: A convenience method that lists all available Apps for
+// the specified
+// FirebaseProject.
+// <br>
+// <br>Typically, interaction with an App should be done using
+// the
+// platform-specific service, but some tool use-cases require a summary
+// of all
+// known Apps (such as for App selector interfaces).
+func (r *ProjectsService) SearchApps(parent string) *ProjectsSearchAppsCall {
+	c := &ProjectsSearchAppsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Apps to return in the response.
+// <br>
+// <br>The server may return fewer than this value at its discretion.
+// If no value is specified (or too large a value is specified), then
+// the
+// server will impose its own limit.
+// <br>
+// <br>This value cannot be negative.
+func (c *ProjectsSearchAppsCall) PageSize(pageSize int64) *ProjectsSearchAppsCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `SearchFirebaseApps` indicating
+// where in the set of Apps to resume listing.
+func (c *ProjectsSearchAppsCall) PageToken(pageToken string) *ProjectsSearchAppsCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsSearchAppsCall) Fields(s ...googleapi.Field) *ProjectsSearchAppsCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsSearchAppsCall) IfNoneMatch(entityTag string) *ProjectsSearchAppsCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsSearchAppsCall) Context(ctx context.Context) *ProjectsSearchAppsCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsSearchAppsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsSearchAppsCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}:searchApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.searchApps" call.
+// Exactly one of *SearchFirebaseAppsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *SearchFirebaseAppsResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsSearchAppsCall) Do(opts ...googleapi.CallOption) (*SearchFirebaseAppsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SearchFirebaseAppsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "A convenience method that lists all available Apps for the specified\nFirebaseProject.\n\u003cbr\u003e\n\u003cbr\u003eTypically, interaction with an App should be done using the\nplatform-specific service, but some tool use-cases require a summary of all\nknown Apps (such as for App selector interfaces).",
+	//   "flatPath": "v1beta1/projects/{projectsId}:searchApps",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.searchApps",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.\n\u003cbr\u003e\n\u003cbr\u003eThis value cannot be negative.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `SearchFirebaseApps` indicating\nwhere in the set of Apps to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}:searchApps",
+	//   "response": {
+	//     "$ref": "SearchFirebaseAppsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsSearchAppsCall) Pages(ctx context.Context, f func(*SearchFirebaseAppsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.projects.androidApps.create":
+
+type ProjectsAndroidAppsCreateCall struct {
+	s          *Service
+	parent     string
+	androidapp *AndroidApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Requests that a new AndroidApp be created.
+// <br>
+// <br>The result of this call is an `Operation` which can be used to
+// track
+// the provisioning process. The `Operation` is automatically deleted
+// after
+// completion, so there is no need to call `DeleteOperation`.
+func (r *ProjectsAndroidAppsService) Create(parent string, androidapp *AndroidApp) *ProjectsAndroidAppsCreateCall {
+	c := &ProjectsAndroidAppsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.androidapp = androidapp
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsCreateCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsCreateCall) Context(ctx context.Context) *ProjectsAndroidAppsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.androidapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/androidApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Requests that a new AndroidApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps",
+	//   "httpMethod": "POST",
+	//   "id": "firebase.projects.androidApps.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/androidApps",
+	//   "request": {
+	//     "$ref": "AndroidApp"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.get":
+
+type ProjectsAndroidAppsGetCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the AndroidApp identified by the specified resource name.
+func (r *ProjectsAndroidAppsService) Get(nameid string) *ProjectsAndroidAppsGetCall {
+	c := &ProjectsAndroidAppsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsGetCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsAndroidAppsGetCall) IfNoneMatch(entityTag string) *ProjectsAndroidAppsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsGetCall) Context(ctx context.Context) *ProjectsAndroidAppsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.get" call.
+// Exactly one of *AndroidApp or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AndroidApp.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsGetCall) Do(opts ...googleapi.CallOption) (*AndroidApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AndroidApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the AndroidApp identified by the specified resource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.androidApps.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "AndroidApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.getConfig":
+
+type ProjectsAndroidAppsGetConfigCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetConfig: Gets the configuration artifact associated with the
+// specified
+// AndroidApp.
+func (r *ProjectsAndroidAppsService) GetConfig(nameid string) *ProjectsAndroidAppsGetConfigCall {
+	c := &ProjectsAndroidAppsGetConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsGetConfigCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsGetConfigCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsAndroidAppsGetConfigCall) IfNoneMatch(entityTag string) *ProjectsAndroidAppsGetConfigCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsGetConfigCall) Context(ctx context.Context) *ProjectsAndroidAppsGetConfigCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsGetConfigCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.getConfig" call.
+// Exactly one of *AndroidAppConfig or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AndroidAppConfig.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsGetConfigCall) Do(opts ...googleapi.CallOption) (*AndroidAppConfig, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AndroidAppConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the configuration artifact associated with the specified\nAndroidApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/config",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.androidApps.getConfig",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+/config$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "AndroidAppConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.list":
+
+type ProjectsAndroidAppsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists each AndroidApp associated with the specified parent
+// Project.
+// <br>
+// <br>The elements are returned in no particular order, but will be
+// a
+// consistent view of the Apps when additional requests are made with
+// a
+// `pageToken`.
+func (r *ProjectsAndroidAppsService) List(parent string) *ProjectsAndroidAppsListCall {
+	c := &ProjectsAndroidAppsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Apps to return in the response.
+// <br>
+// <br>The server may return fewer than this at its discretion.
+// If no value is specified (or too large a value is specified), then
+// the
+// server will impose its own limit.
+func (c *ProjectsAndroidAppsListCall) PageSize(pageSize int64) *ProjectsAndroidAppsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `ListAndroidApps` indicating where
+// in the set of Apps to resume listing.
+func (c *ProjectsAndroidAppsListCall) PageToken(pageToken string) *ProjectsAndroidAppsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsListCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsAndroidAppsListCall) IfNoneMatch(entityTag string) *ProjectsAndroidAppsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsListCall) Context(ctx context.Context) *ProjectsAndroidAppsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/androidApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.list" call.
+// Exactly one of *ListAndroidAppsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListAndroidAppsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsListCall) Do(opts ...googleapi.CallOption) (*ListAndroidAppsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListAndroidAppsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists each AndroidApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.androidApps.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `ListAndroidApps` indicating where\nin the set of Apps to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/androidApps",
+	//   "response": {
+	//     "$ref": "ListAndroidAppsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsAndroidAppsListCall) Pages(ctx context.Context, f func(*ListAndroidAppsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.projects.androidApps.patch":
+
+type ProjectsAndroidAppsPatchCall struct {
+	s          *Service
+	name       string
+	androidapp *AndroidApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the attributes of the AndroidApp identified by the
+// specified
+// resource name.
+func (r *ProjectsAndroidAppsService) Patch(name string, androidapp *AndroidApp) *ProjectsAndroidAppsPatchCall {
+	c := &ProjectsAndroidAppsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.androidapp = androidapp
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Specifies which
+// fields to update.
+// <br>Note that the fields `name`, `appId`, `projectId`, and
+// `packageName`
+// are all immutable.
+func (c *ProjectsAndroidAppsPatchCall) UpdateMask(updateMask string) *ProjectsAndroidAppsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsPatchCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsPatchCall) Context(ctx context.Context) *ProjectsAndroidAppsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.androidapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.patch" call.
+// Exactly one of *AndroidApp or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AndroidApp.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsPatchCall) Do(opts ...googleapi.CallOption) (*AndroidApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AndroidApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the attributes of the AndroidApp identified by the specified\nresource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "firebase.projects.androidApps.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, `projectId`, and `packageName`\nare all immutable.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "AndroidApp"
+	//   },
+	//   "response": {
+	//     "$ref": "AndroidApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.sha.create":
+
+type ProjectsAndroidAppsShaCreateCall struct {
+	s              *Service
+	parentid       string
+	shacertificate *ShaCertificate
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// Create: Adds a SHA certificate to the specified AndroidApp.
+func (r *ProjectsAndroidAppsShaService) Create(parentid string, shacertificate *ShaCertificate) *ProjectsAndroidAppsShaCreateCall {
+	c := &ProjectsAndroidAppsShaCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parentid = parentid
+	c.shacertificate = shacertificate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsShaCreateCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsShaCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsShaCreateCall) Context(ctx context.Context) *ProjectsAndroidAppsShaCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsShaCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsShaCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.shacertificate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/sha")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parentid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.sha.create" call.
+// Exactly one of *ShaCertificate or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ShaCertificate.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsShaCreateCall) Do(opts ...googleapi.CallOption) (*ShaCertificate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ShaCertificate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Adds a SHA certificate to the specified AndroidApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha",
+	//   "httpMethod": "POST",
+	//   "id": "firebase.projects.androidApps.sha.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The parent App to which a SHA certificate will be added, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/sha",
+	//   "request": {
+	//     "$ref": "ShaCertificate"
+	//   },
+	//   "response": {
+	//     "$ref": "ShaCertificate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.sha.delete":
+
+type ProjectsAndroidAppsShaDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Removes a SHA certificate from the specified AndroidApp.
+func (r *ProjectsAndroidAppsShaService) Delete(name string) *ProjectsAndroidAppsShaDeleteCall {
+	c := &ProjectsAndroidAppsShaDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsShaDeleteCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsShaDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsShaDeleteCall) Context(ctx context.Context) *ProjectsAndroidAppsShaDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsShaDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsShaDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.sha.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsAndroidAppsShaDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Removes a SHA certificate from the specified AndroidApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha/{shaId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "firebase.projects.androidApps.sha.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the `sha-key`, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e/sha/\u003cvar\u003eshaHash\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+/sha/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.androidApps.sha.list":
+
+type ProjectsAndroidAppsShaListCall struct {
+	s            *Service
+	parentid     string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Returns the list of SHA-1 and SHA-256 certificates for the
+// specified
+// AndroidApp.
+func (r *ProjectsAndroidAppsShaService) List(parentid string) *ProjectsAndroidAppsShaListCall {
+	c := &ProjectsAndroidAppsShaListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parentid = parentid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsAndroidAppsShaListCall) Fields(s ...googleapi.Field) *ProjectsAndroidAppsShaListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsAndroidAppsShaListCall) IfNoneMatch(entityTag string) *ProjectsAndroidAppsShaListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsAndroidAppsShaListCall) Context(ctx context.Context) *ProjectsAndroidAppsShaListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsAndroidAppsShaListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsAndroidAppsShaListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/sha")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parentid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.androidApps.sha.list" call.
+// Exactly one of *ListShaCertificatesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListShaCertificatesResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsAndroidAppsShaListCall) Do(opts ...googleapi.CallOption) (*ListShaCertificatesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListShaCertificatesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the list of SHA-1 and SHA-256 certificates for the specified\nAndroidApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/androidApps/{androidAppsId}/sha",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.androidApps.sha.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The parent App for which to list SHA certificates, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/androidApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/androidApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/sha",
+	//   "response": {
+	//     "$ref": "ListShaCertificatesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.iosApps.create":
+
+type ProjectsIosAppsCreateCall struct {
+	s          *Service
+	parent     string
+	iosapp     *IosApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Requests that a new IosApp be created.
+// <br>
+// <br>The result of this call is an `Operation` which can be used to
+// track
+// the provisioning process. The `Operation` is automatically deleted
+// after
+// completion, so there is no need to call `DeleteOperation`.
+func (r *ProjectsIosAppsService) Create(parent string, iosapp *IosApp) *ProjectsIosAppsCreateCall {
+	c := &ProjectsIosAppsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.iosapp = iosapp
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsIosAppsCreateCall) Fields(s ...googleapi.Field) *ProjectsIosAppsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsIosAppsCreateCall) Context(ctx context.Context) *ProjectsIosAppsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsIosAppsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsIosAppsCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.iosapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/iosApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.iosApps.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsIosAppsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Requests that a new IosApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/iosApps",
+	//   "httpMethod": "POST",
+	//   "id": "firebase.projects.iosApps.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/iosApps",
+	//   "request": {
+	//     "$ref": "IosApp"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.iosApps.get":
+
+type ProjectsIosAppsGetCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the IosApp identified by the specified resource name.
+func (r *ProjectsIosAppsService) Get(nameid string) *ProjectsIosAppsGetCall {
+	c := &ProjectsIosAppsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsIosAppsGetCall) Fields(s ...googleapi.Field) *ProjectsIosAppsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsIosAppsGetCall) IfNoneMatch(entityTag string) *ProjectsIosAppsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsIosAppsGetCall) Context(ctx context.Context) *ProjectsIosAppsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsIosAppsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsIosAppsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.iosApps.get" call.
+// Exactly one of *IosApp or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *IosApp.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsIosAppsGetCall) Do(opts ...googleapi.CallOption) (*IosApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &IosApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the IosApp identified by the specified resource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.iosApps.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, in the format:\n\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/iosApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "IosApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.iosApps.getConfig":
+
+type ProjectsIosAppsGetConfigCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetConfig: Gets the configuration artifact associated with the
+// specified IosApp.
+func (r *ProjectsIosAppsService) GetConfig(nameid string) *ProjectsIosAppsGetConfigCall {
+	c := &ProjectsIosAppsGetConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsIosAppsGetConfigCall) Fields(s ...googleapi.Field) *ProjectsIosAppsGetConfigCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsIosAppsGetConfigCall) IfNoneMatch(entityTag string) *ProjectsIosAppsGetConfigCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsIosAppsGetConfigCall) Context(ctx context.Context) *ProjectsIosAppsGetConfigCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsIosAppsGetConfigCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsIosAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.iosApps.getConfig" call.
+// Exactly one of *IosAppConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *IosAppConfig.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsIosAppsGetConfigCall) Do(opts ...googleapi.CallOption) (*IosAppConfig, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &IosAppConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the configuration artifact associated with the specified IosApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}/config",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.iosApps.getConfig",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/iosApps/[^/]+/config$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "IosAppConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.iosApps.list":
+
+type ProjectsIosAppsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists each IosApp associated with the specified parent
+// Project.
+// <br>
+// <br>The elements are returned in no particular order, but will be
+// a
+// consistent view of the Apps when additional requests are made with
+// a
+// `pageToken`.
+func (r *ProjectsIosAppsService) List(parent string) *ProjectsIosAppsListCall {
+	c := &ProjectsIosAppsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Apps to return in the response.
+// <br>
+// <br>The server may return fewer than this at its discretion.
+// If no value is specified (or too large a value is specified), the
+// server
+// will impose its own limit.
+func (c *ProjectsIosAppsListCall) PageSize(pageSize int64) *ProjectsIosAppsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `ListIosApps` indicating where in
+// the set of Apps to resume listing.
+func (c *ProjectsIosAppsListCall) PageToken(pageToken string) *ProjectsIosAppsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsIosAppsListCall) Fields(s ...googleapi.Field) *ProjectsIosAppsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsIosAppsListCall) IfNoneMatch(entityTag string) *ProjectsIosAppsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsIosAppsListCall) Context(ctx context.Context) *ProjectsIosAppsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsIosAppsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsIosAppsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/iosApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.iosApps.list" call.
+// Exactly one of *ListIosAppsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListIosAppsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsIosAppsListCall) Do(opts ...googleapi.CallOption) (*ListIosAppsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListIosAppsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists each IosApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/iosApps",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.iosApps.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this at its discretion.\nIf no value is specified (or too large a value is specified), the server\nwill impose its own limit.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `ListIosApps` indicating where in\nthe set of Apps to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/iosApps",
+	//   "response": {
+	//     "$ref": "ListIosAppsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsIosAppsListCall) Pages(ctx context.Context, f func(*ListIosAppsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.projects.iosApps.patch":
+
+type ProjectsIosAppsPatchCall struct {
+	s          *Service
+	name       string
+	iosapp     *IosApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the attributes of the IosApp identified by the
+// specified
+// resource name.
+func (r *ProjectsIosAppsService) Patch(name string, iosapp *IosApp) *ProjectsIosAppsPatchCall {
+	c := &ProjectsIosAppsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.iosapp = iosapp
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Specifies which
+// fields to update.
+// <br>Note that the fields `name`, `appId`, `projectId`, and
+// `bundleId`
+// are all immutable.
+func (c *ProjectsIosAppsPatchCall) UpdateMask(updateMask string) *ProjectsIosAppsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsIosAppsPatchCall) Fields(s ...googleapi.Field) *ProjectsIosAppsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsIosAppsPatchCall) Context(ctx context.Context) *ProjectsIosAppsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsIosAppsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsIosAppsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.iosapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.iosApps.patch" call.
+// Exactly one of *IosApp or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *IosApp.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsIosAppsPatchCall) Do(opts ...googleapi.CallOption) (*IosApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &IosApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the attributes of the IosApp identified by the specified\nresource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/iosApps/{iosAppsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "firebase.projects.iosApps.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/iosApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/iosApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, `projectId`, and `bundleId`\nare all immutable.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "IosApp"
+	//   },
+	//   "response": {
+	//     "$ref": "IosApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.webApps.create":
+
+type ProjectsWebAppsCreateCall struct {
+	s          *Service
+	parent     string
+	webapp     *WebApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Requests that a new WebApp be created.
+// <br>
+// <br>The result of this call is an `Operation` which can be used to
+// track
+// the provisioning process. The `Operation` is automatically deleted
+// after
+// completion, so there is no need to call `DeleteOperation`.
+func (r *ProjectsWebAppsService) Create(parent string, webapp *WebApp) *ProjectsWebAppsCreateCall {
+	c := &ProjectsWebAppsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.webapp = webapp
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsWebAppsCreateCall) Fields(s ...googleapi.Field) *ProjectsWebAppsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsWebAppsCreateCall) Context(ctx context.Context) *ProjectsWebAppsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsWebAppsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsWebAppsCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.webapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/webApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.webApps.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsWebAppsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Requests that a new WebApp be created.\n\u003cbr\u003e\n\u003cbr\u003eThe result of this call is an `Operation` which can be used to track\nthe provisioning process. The `Operation` is automatically deleted after\ncompletion, so there is no need to call `DeleteOperation`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/webApps",
+	//   "httpMethod": "POST",
+	//   "id": "firebase.projects.webApps.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/webApps",
+	//   "request": {
+	//     "$ref": "WebApp"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.webApps.get":
+
+type ProjectsWebAppsGetCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the WebApp identified by the specified resource name.
+func (r *ProjectsWebAppsService) Get(nameid string) *ProjectsWebAppsGetCall {
+	c := &ProjectsWebAppsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsWebAppsGetCall) Fields(s ...googleapi.Field) *ProjectsWebAppsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsWebAppsGetCall) IfNoneMatch(entityTag string) *ProjectsWebAppsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsWebAppsGetCall) Context(ctx context.Context) *ProjectsWebAppsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsWebAppsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsWebAppsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.webApps.get" call.
+// Exactly one of *WebApp or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *WebApp.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsWebAppsGetCall) Do(opts ...googleapi.CallOption) (*WebApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WebApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the WebApp identified by the specified resource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.webApps.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/webApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "WebApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.webApps.getConfig":
+
+type ProjectsWebAppsGetConfigCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetConfig: Gets the configuration artifact associated with the
+// specified WebApp.
+func (r *ProjectsWebAppsService) GetConfig(nameid string) *ProjectsWebAppsGetConfigCall {
+	c := &ProjectsWebAppsGetConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsWebAppsGetConfigCall) Fields(s ...googleapi.Field) *ProjectsWebAppsGetConfigCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsWebAppsGetConfigCall) IfNoneMatch(entityTag string) *ProjectsWebAppsGetConfigCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsWebAppsGetConfigCall) Context(ctx context.Context) *ProjectsWebAppsGetConfigCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsWebAppsGetConfigCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsWebAppsGetConfigCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.webApps.getConfig" call.
+// Exactly one of *WebAppConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *WebAppConfig.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsWebAppsGetConfigCall) Do(opts ...googleapi.CallOption) (*WebAppConfig, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WebAppConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the configuration artifact associated with the specified WebApp.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}/config",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.webApps.getConfig",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the App configuration to download, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e/config\u003c/code\u003e\n\u003cbr\u003eAs an \u003cvar\u003eappId\u003c/var\u003e is a unique identifier, the Unique Resource\nfrom Sub-Collection access pattern may be used here, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/-/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/webApps/[^/]+/config$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "WebAppConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "firebase.projects.webApps.list":
+
+type ProjectsWebAppsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists each WebApp associated with the specified parent
+// Project.
+// <br>
+// <br>The elements are returned in no particular order, but will be
+// a
+// consistent view of the Apps when additional requests are made with
+// a
+// `pageToken`.
+func (r *ProjectsWebAppsService) List(parent string) *ProjectsWebAppsListCall {
+	c := &ProjectsWebAppsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Apps to return in the response.
+// <br>
+// <br>The server may return fewer than this value at its discretion.
+// If no value is specified (or too large a value is specified), then
+// the
+// server will impose its own limit.
+func (c *ProjectsWebAppsListCall) PageSize(pageSize int64) *ProjectsWebAppsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token returned
+// from a previous call to `ListWebApps` indicating where in
+// the set of Apps to resume listing.
+func (c *ProjectsWebAppsListCall) PageToken(pageToken string) *ProjectsWebAppsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsWebAppsListCall) Fields(s ...googleapi.Field) *ProjectsWebAppsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsWebAppsListCall) IfNoneMatch(entityTag string) *ProjectsWebAppsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsWebAppsListCall) Context(ctx context.Context) *ProjectsWebAppsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsWebAppsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsWebAppsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/webApps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.webApps.list" call.
+// Exactly one of *ListWebAppsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListWebAppsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsWebAppsListCall) Do(opts ...googleapi.CallOption) (*ListWebAppsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListWebAppsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists each WebApp associated with the specified parent Project.\n\u003cbr\u003e\n\u003cbr\u003eThe elements are returned in no particular order, but will be a\nconsistent view of the Apps when additional requests are made with a\n`pageToken`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/webApps",
+	//   "httpMethod": "GET",
+	//   "id": "firebase.projects.webApps.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of Apps to return in the response.\n\u003cbr\u003e\n\u003cbr\u003eThe server may return fewer than this value at its discretion.\nIf no value is specified (or too large a value is specified), then the\nserver will impose its own limit.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token returned from a previous call to `ListWebApps` indicating where in\nthe set of Apps to resume listing.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The parent Project for which to list Apps, in the format:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/webApps",
+	//   "response": {
+	//     "$ref": "ListWebAppsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/firebase",
+	//     "https://www.googleapis.com/auth/firebase.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsWebAppsListCall) Pages(ctx context.Context, f func(*ListWebAppsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "firebase.projects.webApps.patch":
+
+type ProjectsWebAppsPatchCall struct {
+	s          *Service
+	name       string
+	webapp     *WebApp
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the attributes of the WebApp identified by the
+// specified
+// resource name.
+func (r *ProjectsWebAppsService) Patch(name string, webapp *WebApp) *ProjectsWebAppsPatchCall {
+	c := &ProjectsWebAppsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.webapp = webapp
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Specifies which
+// fields to update.
+// <br>Note that the fields `name`, `appId`, and `projectId` are
+// all
+// immutable.
+func (c *ProjectsWebAppsPatchCall) UpdateMask(updateMask string) *ProjectsWebAppsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsWebAppsPatchCall) Fields(s ...googleapi.Field) *ProjectsWebAppsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsWebAppsPatchCall) Context(ctx context.Context) *ProjectsWebAppsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsWebAppsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsWebAppsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.webapp)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "firebase.projects.webApps.patch" call.
+// Exactly one of *WebApp or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *WebApp.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsWebAppsPatchCall) Do(opts ...googleapi.CallOption) (*WebApp, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WebApp{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the attributes of the WebApp identified by the specified\nresource name.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/webApps/{webAppsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "firebase.projects.webApps.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The fully qualified resource name of the App, for example:\n\u003cbr\u003e\u003ccode\u003eprojects/\u003cvar\u003eprojectId\u003c/var\u003e/webApps/\u003cvar\u003eappId\u003c/var\u003e\u003c/code\u003e",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/webApps/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Specifies which fields to update.\n\u003cbr\u003eNote that the fields `name`, `appId`, and `projectId` are all\nimmutable.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "WebApp"
+	//   },
+	//   "response": {
+	//     "$ref": "WebApp"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/firebase"
+	//   ]
+	// }
+
+}
diff --git a/healthcare/v1alpha2/healthcare-api.json b/healthcare/v1alpha2/healthcare-api.json
index 5f25305..9f9bd6b 100644
--- a/healthcare/v1alpha2/healthcare-api.json
+++ b/healthcare/v1alpha2/healthcare-api.json
@@ -2572,7 +2572,7 @@
                           ]
                         },
                         "search": {
-                          "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.",
+                          "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.\n\nSupported search result parameters: `_sort`, `_count`, `_include`,\n`_revinclude`, `_summary=text`, `_summary=data`, and `_elements`.\n\nThe maximum number of search results returned defaults to 100, which can\nbe overridden by the `_count` parameter up to a maximum limit of 1000. If\nthere are additional results, the returned `Bundle` will contain\npagination links.",
                           "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
                           "httpMethod": "POST",
                           "id": "healthcare.projects.locations.datasets.fhirStores.fhir.search",
@@ -3236,7 +3236,7 @@
       }
     }
   },
-  "revision": "20190607",
+  "revision": "20190615",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -3564,7 +3564,7 @@
           "enumDescriptions": [
             "No tag filtration profile provided. Same as KEEP_ALL_PROFILE.",
             "Keep only tags required to produce valid DICOM.",
-            "Remove tags based on DICOM Standard's Attribute Confidentiality Basic\nProfile (DICOM Standard Edition 2018e).",
+            "Remove tags based on DICOM Standard's Attribute Confidentiality Basic\nProfile (DICOM Standard Edition 2018e)\nhttp://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html.",
             "Keep all tags.",
             "Inspects within tag contents and replaces sensitive text. The process\ncan be configured using the TextConfig.\nApplies to all tags with the following Value Representation names:\nAE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS"
           ],
diff --git a/healthcare/v1alpha2/healthcare-gen.go b/healthcare/v1alpha2/healthcare-gen.go
index 96703e3..e774721 100644
--- a/healthcare/v1alpha2/healthcare-gen.go
+++ b/healthcare/v1alpha2/healthcare-gen.go
@@ -1136,7 +1136,10 @@
 	// valid DICOM.
 	//   "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" - Remove tags based on
 	// DICOM Standard's Attribute Confidentiality Basic
-	// Profile (DICOM Standard Edition 2018e).
+	// Profile (DICOM Standard Edition
+	// 2018e)
+	// http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/c
+	// hapter_E.html.
 	//   "KEEP_ALL_PROFILE" - Keep all tags.
 	//   "DEIDENTIFY_TAG_CONTENTS" - Inspects within tag contents and
 	// replaces sensitive text. The process
@@ -15486,6 +15489,19 @@
 // `:text`,
 // `:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and
 // `:recurse`.
+//
+// Supported search result parameters: `_sort`, `_count`,
+// `_include`,
+// `_revinclude`, `_summary=text`, `_summary=data`, and
+// `_elements`.
+//
+// The maximum number of search results returned defaults to 100, which
+// can
+// be overridden by the `_count` parameter up to a maximum limit of
+// 1000. If
+// there are additional results, the returned `Bundle` will
+// contain
+// pagination links.
 func (r *ProjectsLocationsDatasetsFhirStoresFhirService) Search(parent string, searchresourcesrequest *SearchResourcesRequest) *ProjectsLocationsDatasetsFhirStoresFhirSearchCall {
 	c := &ProjectsLocationsDatasetsFhirStoresFhirSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -15550,7 +15566,7 @@
 	gensupport.SetOptions(c.urlParams_, opts...)
 	return c.doRequest("")
 	// {
-	//   "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.",
+	//   "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.\n\nSupported search result parameters: `_sort`, `_count`, `_include`,\n`_revinclude`, `_summary=text`, `_summary=data`, and `_elements`.\n\nThe maximum number of search results returned defaults to 100, which can\nbe overridden by the `_count` parameter up to a maximum limit of 1000. If\nthere are additional results, the returned `Bundle` will contain\npagination links.",
 	//   "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
 	//   "httpMethod": "POST",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.fhir.search",
diff --git a/healthcare/v1beta1/healthcare-api.json b/healthcare/v1beta1/healthcare-api.json
index 2e8c39a..1aa4199 100644
--- a/healthcare/v1beta1/healthcare-api.json
+++ b/healthcare/v1beta1/healthcare-api.json
@@ -2136,7 +2136,7 @@
                           ]
                         },
                         "search": {
-                          "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.",
+                          "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.\n\nSupported search result parameters: `_sort`, `_count`, `_include`,\n`_revinclude`, `_summary=text`, `_summary=data`, and `_elements`.\n\nThe maximum number of search results returned defaults to 100, which can\nbe overridden by the `_count` parameter up to a maximum limit of 1000. If\nthere are additional results, the returned `Bundle` will contain\npagination links.",
                           "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
                           "httpMethod": "POST",
                           "id": "healthcare.projects.locations.datasets.fhirStores.fhir.search",
@@ -2743,7 +2743,7 @@
       }
     }
   },
-  "revision": "20190607",
+  "revision": "20190615",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -2975,7 +2975,7 @@
           "enumDescriptions": [
             "No tag filtration profile provided. Same as KEEP_ALL_PROFILE.",
             "Keep only tags required to produce valid DICOM.",
-            "Remove tags based on DICOM Standard's Attribute Confidentiality Basic\nProfile (DICOM Standard Edition 2018e).",
+            "Remove tags based on DICOM Standard's Attribute Confidentiality Basic\nProfile (DICOM Standard Edition 2018e)\nhttp://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html.",
             "Keep all tags.",
             "Inspects within tag contents and replaces sensitive text. The process\ncan be configured using the TextConfig.\nApplies to all tags with the following Value Representation names:\nAE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS"
           ],
diff --git a/healthcare/v1beta1/healthcare-gen.go b/healthcare/v1beta1/healthcare-gen.go
index 4f0a676..b7307ef 100644
--- a/healthcare/v1beta1/healthcare-gen.go
+++ b/healthcare/v1beta1/healthcare-gen.go
@@ -863,7 +863,10 @@
 	// valid DICOM.
 	//   "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" - Remove tags based on
 	// DICOM Standard's Attribute Confidentiality Basic
-	// Profile (DICOM Standard Edition 2018e).
+	// Profile (DICOM Standard Edition
+	// 2018e)
+	// http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/c
+	// hapter_E.html.
 	//   "KEEP_ALL_PROFILE" - Keep all tags.
 	//   "DEIDENTIFY_TAG_CONTENTS" - Inspects within tag contents and
 	// replaces sensitive text. The process
@@ -12673,6 +12676,19 @@
 // `:text`,
 // `:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and
 // `:recurse`.
+//
+// Supported search result parameters: `_sort`, `_count`,
+// `_include`,
+// `_revinclude`, `_summary=text`, `_summary=data`, and
+// `_elements`.
+//
+// The maximum number of search results returned defaults to 100, which
+// can
+// be overridden by the `_count` parameter up to a maximum limit of
+// 1000. If
+// there are additional results, the returned `Bundle` will
+// contain
+// pagination links.
 func (r *ProjectsLocationsDatasetsFhirStoresFhirService) Search(parent string, searchresourcesrequest *SearchResourcesRequest) *ProjectsLocationsDatasetsFhirStoresFhirSearchCall {
 	c := &ProjectsLocationsDatasetsFhirStoresFhirSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -12737,7 +12753,7 @@
 	gensupport.SetOptions(c.urlParams_, opts...)
 	return c.doRequest("")
 	// {
-	//   "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.",
+	//   "description": "Searches for resources in the given FHIR store according to criteria\nspecified as query parameters.\n\nImplements the FHIR standard [search\ninteraction](http://hl7.org/implement/standards/fhir/STU3/http.html#search)\nusing the search semantics described in the [FHIR Search\nspecification](http://hl7.org/implement/standards/fhir/STU3/search.html).\n\nSupports three methods of search defined by the specification:\n\n*  `GET [base]?[parameters]` to search across all resources.\n*  `GET [base]/[type]?[parameters]` to search resources of a specified\ntype.\n*  `POST [base]/[type]/_search?[parameters]` as an alternate form having\nthe same semantics as the `GET` method.\n\nThe `GET` methods do not support compartment searches. The `POST` method\ndoes not support `application/x-www-form-urlencoded` search parameters.\n\nOn success, the response body will contain a JSON-encoded representation\nof a `Bundle` resource of type `searchset`, containing the results of the\nsearch.\nErrors generated by the FHIR store will contain a JSON-encoded\n`OperationOutcome` resource describing the reason for the error. If the\nrequest cannot be mapped to a valid API method on a FHIR store, a generic\nGCP error might be returned instead.\n\nThe server's capability statement, retrieved through\ncapabilities, indicates what search parameters\nare supported on each FHIR resource. A list of all search parameters\ndefined by the specification can be found in the [FHIR Search Parameter\nRegistry](http://hl7.org/implement/standards/fhir/STU3/searchparameter-registry.html).\n\nSupported search modifiers: `:missing`, `:exact`, `:contains`, `:text`,\n`:in`, `:not-in`, `:above`, `:below`, `:[type]`, `:not`, and `:recurse`.\n\nSupported search result parameters: `_sort`, `_count`, `_include`,\n`_revinclude`, `_summary=text`, `_summary=data`, and `_elements`.\n\nThe maximum number of search results returned defaults to 100, which can\nbe overridden by the `_count` parameter up to a maximum limit of 1000. If\nthere are additional results, the returned `Bundle` will contain\npagination links.",
 	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
 	//   "httpMethod": "POST",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.fhir.search",
diff --git a/ml/v1/ml-api.json b/ml/v1/ml-api.json
index 94121fa..b4f31ff 100644
--- a/ml/v1/ml-api.json
+++ b/ml/v1/ml-api.json
@@ -1019,7 +1019,7 @@
       }
     }
   },
-  "revision": "20190530",
+  "revision": "20190614",
   "rootUrl": "https://ml.googleapis.com/",
   "schemas": {
     "GoogleApi__HttpBody": {
@@ -1231,6 +1231,11 @@
           "$ref": "GoogleCloudMlV1__BuiltInAlgorithmOutput",
           "description": "Details related to built-in algorithms jobs.\nOnly set for trials of built-in algorithms jobs that have succeeded."
         },
+        "endTime": {
+          "description": "Output only. End time for the trial.",
+          "format": "google-datetime",
+          "type": "string"
+        },
         "finalMetric": {
           "$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric",
           "description": "The final objective metric seen for this trial."
@@ -1246,6 +1251,35 @@
           "description": "True if the trial is stopped early.",
           "type": "boolean"
         },
+        "startTime": {
+          "description": "Output only. Start time for the trial.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. The detailed state of the trial.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "QUEUED",
+            "PREPARING",
+            "RUNNING",
+            "SUCCEEDED",
+            "FAILED",
+            "CANCELLING",
+            "CANCELLED"
+          ],
+          "enumDescriptions": [
+            "The job state is unspecified.",
+            "The job has been just created and processing has not yet begun.",
+            "The service is preparing to run the job.",
+            "The job is in progress.",
+            "The job completed successfully.",
+            "The job failed.\n`error_message` should contain the details of the failure.",
+            "The job is being cancelled.\n`error_message` should describe the reason for the cancellation.",
+            "The job has been cancelled.\n`error_message` should describe the reason for the cancellation."
+          ],
+          "type": "string"
+        },
         "trialId": {
           "description": "The trial id for these results.",
           "type": "string"
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index 7f671d1..4819ea6 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -646,6 +646,9 @@
 	// Only set for trials of built-in algorithms jobs that have succeeded.
 	BuiltInAlgorithmOutput *GoogleCloudMlV1__BuiltInAlgorithmOutput `json:"builtInAlgorithmOutput,omitempty"`
 
+	// EndTime: Output only. End time for the trial.
+	EndTime string `json:"endTime,omitempty"`
+
 	// FinalMetric: The final objective metric seen for this trial.
 	FinalMetric *GoogleCloudMlV1HyperparameterOutputHyperparameterMetric `json:"finalMetric,omitempty"`
 
@@ -655,6 +658,26 @@
 	// IsTrialStoppedEarly: True if the trial is stopped early.
 	IsTrialStoppedEarly bool `json:"isTrialStoppedEarly,omitempty"`
 
+	// StartTime: Output only. Start time for the trial.
+	StartTime string `json:"startTime,omitempty"`
+
+	// State: Output only. The detailed state of the trial.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - The job state is unspecified.
+	//   "QUEUED" - The job has been just created and processing has not yet
+	// begun.
+	//   "PREPARING" - The service is preparing to run the job.
+	//   "RUNNING" - The job is in progress.
+	//   "SUCCEEDED" - The job completed successfully.
+	//   "FAILED" - The job failed.
+	// `error_message` should contain the details of the failure.
+	//   "CANCELLING" - The job is being cancelled.
+	// `error_message` should describe the reason for the cancellation.
+	//   "CANCELLED" - The job has been cancelled.
+	// `error_message` should describe the reason for the cancellation.
+	State string `json:"state,omitempty"`
+
 	// TrialId: The trial id for these results.
 	TrialId string `json:"trialId,omitempty"`
 
diff --git a/remotebuildexecution/v1/remotebuildexecution-api.json b/remotebuildexecution/v1/remotebuildexecution-api.json
index dd0fd67..5fb2ee7 100644
--- a/remotebuildexecution/v1/remotebuildexecution-api.json
+++ b/remotebuildexecution/v1/remotebuildexecution-api.json
@@ -337,7 +337,7 @@
       }
     }
   },
-  "revision": "20190612",
+  "revision": "20190618",
   "rootUrl": "https://remotebuildexecution.googleapis.com/",
   "schemas": {
     "BuildBazelRemoteExecutionV2Action": {
@@ -1136,7 +1136,7 @@
       "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
       "properties": {
         "filter": {
-          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)\n\nThis field is currently ignored in all requests.",
+          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)",
           "type": "string"
         },
         "parent": {
@@ -1192,7 +1192,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThis field is currently ignored in all requests.",
+          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThere can not be more than 64 labels per resource.",
           "type": "object"
         },
         "machineType": {
diff --git a/remotebuildexecution/v1/remotebuildexecution-gen.go b/remotebuildexecution/v1/remotebuildexecution-gen.go
index 693071e..e85a6c7 100644
--- a/remotebuildexecution/v1/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v1/remotebuildexecution-gen.go
@@ -2192,8 +2192,6 @@
 	// Example filter:
 	// configuration.labels.key1 = * AND (state = RUNNING OR state =
 	// UPDATING)
-	//
-	// This field is currently ignored in all requests.
 	Filter string `json:"filter,omitempty"`
 
 	// Parent: Resource name of the instance.
@@ -2319,7 +2317,7 @@
 	// International letters are permitted. Keys must start with a letter
 	// but
 	// values are optional.
-	// This field is currently ignored in all requests.
+	// There can not be more than 64 labels per resource.
 	Labels map[string]string `json:"labels,omitempty"`
 
 	// MachineType: Required. Machine type of the worker, such as
diff --git a/remotebuildexecution/v1alpha/remotebuildexecution-api.json b/remotebuildexecution/v1alpha/remotebuildexecution-api.json
index 7d77e8d..52b17e3 100644
--- a/remotebuildexecution/v1alpha/remotebuildexecution-api.json
+++ b/remotebuildexecution/v1alpha/remotebuildexecution-api.json
@@ -303,7 +303,7 @@
                   ],
                   "parameters": {
                     "filter": {
-                      "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)\n\nThis field is currently ignored in all requests.",
+                      "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)",
                       "location": "query",
                       "type": "string"
                     },
@@ -387,7 +387,7 @@
       }
     }
   },
-  "revision": "20190612",
+  "revision": "20190618",
   "rootUrl": "https://admin-remotebuildexecution.googleapis.com/",
   "schemas": {
     "BuildBazelRemoteExecutionV2Action": {
@@ -1175,7 +1175,7 @@
       "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
       "properties": {
         "filter": {
-          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)\n\nThis field is currently ignored in all requests.",
+          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)",
           "type": "string"
         },
         "parent": {
@@ -1231,7 +1231,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThis field is currently ignored in all requests.",
+          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThere can not be more than 64 labels per resource.",
           "type": "object"
         },
         "machineType": {
diff --git a/remotebuildexecution/v1alpha/remotebuildexecution-gen.go b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
index 7aa1f26..756fc98 100644
--- a/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
@@ -2156,8 +2156,6 @@
 	// Example filter:
 	// configuration.labels.key1 = * AND (state = RUNNING OR state =
 	// UPDATING)
-	//
-	// This field is currently ignored in all requests.
 	Filter string `json:"filter,omitempty"`
 
 	// Parent: Resource name of the instance.
@@ -2287,7 +2285,7 @@
 	// International letters are permitted. Keys must start with a letter
 	// but
 	// values are optional.
-	// This field is currently ignored in all requests.
+	// There can not be more than 64 labels per resource.
 	Labels map[string]string `json:"labels,omitempty"`
 
 	// MachineType: Required. Machine type of the worker, such as
@@ -5179,8 +5177,6 @@
 // Example filter:
 // configuration.labels.key1 = * AND (state = RUNNING OR state =
 // UPDATING)
-//
-// This field is currently ignored in all requests.
 func (c *ProjectsInstancesWorkerpoolsListCall) Filter(filter string) *ProjectsInstancesWorkerpoolsListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -5296,7 +5292,7 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)\n\nThis field is currently ignored in all requests.",
+	//       "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/remotebuildexecution/v2/remotebuildexecution-api.json b/remotebuildexecution/v2/remotebuildexecution-api.json
index 0648d65..afe64f5 100644
--- a/remotebuildexecution/v2/remotebuildexecution-api.json
+++ b/remotebuildexecution/v2/remotebuildexecution-api.json
@@ -446,7 +446,7 @@
       }
     }
   },
-  "revision": "20190612",
+  "revision": "20190618",
   "rootUrl": "https://remotebuildexecution.googleapis.com/",
   "schemas": {
     "BuildBazelRemoteExecutionV2Action": {
@@ -1619,7 +1619,7 @@
       "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
       "properties": {
         "filter": {
-          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)\n\nThis field is currently ignored in all requests.",
+          "description": "Optional. A filter to constrain the pools returned. Filters have the form:\n\n\u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e [[AND|OR] \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e]...\n\n\u003cfield\u003e is the path for a field or map key in the Pool proto message.\ne.g. \"configuration.disk_size_gb\" or \"configuration.labels.key\".\n\u003coperator\u003e can be one of \"\u003c\", \"\u003c=\", \"\u003e=\", \"\u003e\", \"=\", \"!=\", \":\".\n\":\" is a HAS operation for strings and repeated primitive fields.\n\u003cvalue\u003e is the value to test, case-insensitive for strings. \"*\" stands for\nany value and can be used to test for key presence.\nParenthesis determine AND/OR precedence. In space separated restrictions,\nAND is implicit, e.g. \"a = b x = y\" is equivalent to \"a = b AND x = y\".\n\nExample filter:\nconfiguration.labels.key1 = * AND (state = RUNNING OR state = UPDATING)",
           "type": "string"
         },
         "parent": {
@@ -1675,7 +1675,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThis field is currently ignored in all requests.",
+          "description": "Labels associated with the workers.\nLabel keys and values can be no longer than 63 characters, can only contain\nlowercase letters, numeric characters, underscores and dashes.\nInternational letters are permitted. Keys must start with a letter but\nvalues are optional.\nThere can not be more than 64 labels per resource.",
           "type": "object"
         },
         "machineType": {
diff --git a/remotebuildexecution/v2/remotebuildexecution-gen.go b/remotebuildexecution/v2/remotebuildexecution-gen.go
index f8d7094..1f88419 100644
--- a/remotebuildexecution/v2/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v2/remotebuildexecution-gen.go
@@ -2958,8 +2958,6 @@
 	// Example filter:
 	// configuration.labels.key1 = * AND (state = RUNNING OR state =
 	// UPDATING)
-	//
-	// This field is currently ignored in all requests.
 	Filter string `json:"filter,omitempty"`
 
 	// Parent: Resource name of the instance.
@@ -3085,7 +3083,7 @@
 	// International letters are permitted. Keys must start with a letter
 	// but
 	// values are optional.
-	// This field is currently ignored in all requests.
+	// There can not be more than 64 labels per resource.
 	Labels map[string]string `json:"labels,omitempty"`
 
 	// MachineType: Required. Machine type of the worker, such as
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index 82ad104..5719ddd 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -196,7 +196,7 @@
       }
     }
   },
-  "revision": "20190607",
+  "revision": "20190603",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -1572,7 +1572,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index 9d6e3e3..853e2c2 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -2770,14 +2770,81 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). Each `Status` message
-// contains
-// three pieces of data: error code, error message, and error
-// details.
+// used by [gRPC](https://github.com/grpc). The error model is designed
+// to be:
 //
-// You can find out more about this error model and how to work with it
-// in the
-// [API Design Guide](https://cloud.google.com/apis/design/errors).
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code,
+// error
+// message, and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/servicemanagement/v1/servicemanagement-api.json b/servicemanagement/v1/servicemanagement-api.json
index 2bb0d01..23ed839 100644
--- a/servicemanagement/v1/servicemanagement-api.json
+++ b/servicemanagement/v1/servicemanagement-api.json
@@ -881,7 +881,7 @@
       }
     }
   },
-  "revision": "20190610",
+  "revision": "20190614",
   "rootUrl": "https://servicemanagement.googleapis.com/",
   "schemas": {
     "Advice": {
@@ -2304,7 +2304,7 @@
       "type": "object"
     },
     "MonitoredResourceDescriptor": {
-      "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.\n\nNext ID: 10",
+      "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.",
       "id": "MonitoredResourceDescriptor",
       "properties": {
         "description": {
diff --git a/servicemanagement/v1/servicemanagement-gen.go b/servicemanagement/v1/servicemanagement-gen.go
index 10d6ddc..07cb8e6 100644
--- a/servicemanagement/v1/servicemanagement-gen.go
+++ b/servicemanagement/v1/servicemanagement-gen.go
@@ -3780,8 +3780,6 @@
 // provide a `list` method that returns the monitored resource
 // descriptors used
 // by the API.
-//
-// Next ID: 10
 type MonitoredResourceDescriptor struct {
 	// Description: Optional. A detailed description of the monitored
 	// resource type that might
diff --git a/tagmanager/v1/tagmanager-api.json b/tagmanager/v1/tagmanager-api.json
index de62810..5e92e40 100644
--- a/tagmanager/v1/tagmanager-api.json
+++ b/tagmanager/v1/tagmanager-api.json
@@ -26,17 +26,16 @@
       }
     }
   },
-  "basePath": "/tagmanager/v1/",
-  "baseUrl": "https://www.googleapis.com/tagmanager/v1/",
-  "batchPath": "batch/tagmanager/v1",
+  "basePath": "",
+  "baseUrl": "https://www.googleapis.com/",
+  "batchPath": "batch",
   "canonicalName": "Tag Manager",
-  "description": "Accesses Tag Manager accounts and containers.",
+  "description": "This API allows clients to access and modify container and tag\n     configuration.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://developers.google.com/tag-manager/api/v1/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/zCKQQSYtFiBn9FkknoRWdzQYCqs\"",
+  "documentationLink": "https://developers.google.com/tag-manager",
   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
   },
   "id": "tagmanager:v1",
   "kind": "discovery#restDescription",
@@ -44,18 +43,45 @@
   "ownerDomain": "google.com",
   "ownerName": "Google",
   "parameters": {
-    "alt": {
-      "default": "json",
-      "description": "Data format for the response.",
+    "$.xgafv": {
+      "description": "V1 error format.",
       "enum": [
-        "json"
+        "1",
+        "2"
       ],
       "enumDescriptions": [
-        "Responses with Content-Type of application/json"
+        "v1 error format",
+        "v2 error format"
       ],
       "location": "query",
       "type": "string"
     },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
     "fields": {
       "description": "Selector specifying which fields to include in a partial response.",
       "location": "query",
@@ -78,12 +104,17 @@
       "type": "boolean"
     },
     "quotaUser": {
-      "description": "An opaque string that represents a user for quota purposes. Must not exceed 40 characters.",
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
       "location": "query",
       "type": "string"
     },
-    "userIp": {
-      "description": "Deprecated. Please use quotaUser instead.",
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
       "location": "query",
       "type": "string"
     }
@@ -94,6 +125,7 @@
       "methods": {
         "get": {
           "description": "Gets a GTM Account.",
+          "flatPath": "tagmanager/v1/accounts/{accountId}",
           "httpMethod": "GET",
           "id": "tagmanager.accounts.get",
           "parameterOrder": [
@@ -107,7 +139,7 @@
               "type": "string"
             }
           },
-          "path": "accounts/{accountId}",
+          "path": "tagmanager/v1/accounts/{accountId}",
           "response": {
             "$ref": "Account"
           },
@@ -119,9 +151,12 @@
         },
         "list": {
           "description": "Lists all GTM Accounts that a user has access to.",
+          "flatPath": "tagmanager/v1/accounts",
           "httpMethod": "GET",
           "id": "tagmanager.accounts.list",
-          "path": "accounts",
+          "parameterOrder": [],
+          "parameters": {},
+          "path": "tagmanager/v1/accounts",
           "response": {
             "$ref": "ListAccountsResponse"
           },
@@ -133,6 +168,7 @@
         },
         "update": {
           "description": "Updates a GTM Account.",
+          "flatPath": "tagmanager/v1/accounts/{accountId}",
           "httpMethod": "PUT",
           "id": "tagmanager.accounts.update",
           "parameterOrder": [
@@ -146,12 +182,12 @@
               "type": "string"
             },
             "fingerprint": {
-              "description": "When provided, this fingerprint must match the fingerprint of the account in storage.",
+              "description": "When provided, this fingerprint must match the fingerprint of the account\nin storage.",
               "location": "query",
               "type": "string"
             }
           },
-          "path": "accounts/{accountId}",
+          "path": "tagmanager/v1/accounts/{accountId}",
           "request": {
             "$ref": "Account"
           },
@@ -168,6 +204,7 @@
           "methods": {
             "create": {
               "description": "Creates a Container.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/containers",
               "httpMethod": "POST",
               "id": "tagmanager.accounts.containers.create",
               "parameterOrder": [
@@ -181,7 +218,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/containers",
+              "path": "tagmanager/v1/accounts/{accountId}/containers",
               "request": {
                 "$ref": "Container"
               },
@@ -194,6 +231,7 @@
             },
             "delete": {
               "description": "Deletes a Container.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "httpMethod": "DELETE",
               "id": "tagmanager.accounts.containers.delete",
               "parameterOrder": [
@@ -214,13 +252,14 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/containers/{containerId}",
+              "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "scopes": [
                 "https://www.googleapis.com/auth/tagmanager.delete.containers"
               ]
             },
             "get": {
               "description": "Gets a Container.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "httpMethod": "GET",
               "id": "tagmanager.accounts.containers.get",
               "parameterOrder": [
@@ -241,7 +280,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/containers/{containerId}",
+              "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "response": {
                 "$ref": "Container"
               },
@@ -252,6 +291,7 @@
             },
             "list": {
               "description": "Lists all Containers that belongs to a GTM Account.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/containers",
               "httpMethod": "GET",
               "id": "tagmanager.accounts.containers.list",
               "parameterOrder": [
@@ -265,7 +305,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/containers",
+              "path": "tagmanager/v1/accounts/{accountId}/containers",
               "response": {
                 "$ref": "ListContainersResponse"
               },
@@ -276,6 +316,7 @@
             },
             "update": {
               "description": "Updates a Container.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "httpMethod": "PUT",
               "id": "tagmanager.accounts.containers.update",
               "parameterOrder": [
@@ -296,12 +337,12 @@
                   "type": "string"
                 },
                 "fingerprint": {
-                  "description": "When provided, this fingerprint must match the fingerprint of the container in storage.",
+                  "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer in storage.",
                   "location": "query",
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/containers/{containerId}",
+              "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
               "request": {
                 "$ref": "Container"
               },
@@ -318,6 +359,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a GTM Environment.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.environments.create",
                   "parameterOrder": [
@@ -338,7 +380,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
                   "request": {
                     "$ref": "Environment"
                   },
@@ -351,6 +393,7 @@
                 },
                 "delete": {
                   "description": "Deletes a GTM Environment.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.environments.delete",
                   "parameterOrder": [
@@ -378,13 +421,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
                 },
                 "get": {
                   "description": "Gets a GTM Environment.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.environments.get",
                   "parameterOrder": [
@@ -412,7 +456,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "response": {
                     "$ref": "Environment"
                   },
@@ -423,6 +467,7 @@
                 },
                 "list": {
                   "description": "Lists all GTM Environments of a GTM Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.environments.list",
                   "parameterOrder": [
@@ -443,7 +488,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
                   "response": {
                     "$ref": "ListEnvironmentsResponse"
                   },
@@ -454,6 +499,7 @@
                 },
                 "update": {
                   "description": "Updates a GTM Environment.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.environments.update",
                   "parameterOrder": [
@@ -481,12 +527,12 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the\nenvironment in storage.",
                       "location": "query",
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
                   "request": {
                     "$ref": "Environment"
                   },
@@ -503,6 +549,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a GTM Folder.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.folders.create",
                   "parameterOrder": [
@@ -523,7 +570,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/folders",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
                   "request": {
                     "$ref": "Folder"
                   },
@@ -536,6 +583,7 @@
                 },
                 "delete": {
                   "description": "Deletes a GTM Folder.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.folders.delete",
                   "parameterOrder": [
@@ -563,13 +611,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
                 },
                 "get": {
                   "description": "Gets a GTM Folder.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.folders.get",
                   "parameterOrder": [
@@ -597,7 +646,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "response": {
                     "$ref": "Folder"
                   },
@@ -608,6 +657,7 @@
                 },
                 "list": {
                   "description": "Lists all GTM Folders of a Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.folders.list",
                   "parameterOrder": [
@@ -628,7 +678,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/folders",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
                   "response": {
                     "$ref": "ListFoldersResponse"
                   },
@@ -639,6 +689,7 @@
                 },
                 "update": {
                   "description": "Updates a GTM Folder.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.folders.update",
                   "parameterOrder": [
@@ -660,7 +711,7 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the folder in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the folder in\nstorage.",
                       "location": "query",
                       "type": "string"
                     },
@@ -671,7 +722,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
                   "request": {
                     "$ref": "Folder"
                   },
@@ -688,6 +739,7 @@
                   "methods": {
                     "list": {
                       "description": "List all entities in a GTM Folder.",
+                      "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
                       "httpMethod": "GET",
                       "id": "tagmanager.accounts.containers.folders.entities.list",
                       "parameterOrder": [
@@ -715,7 +767,7 @@
                           "type": "string"
                         }
                       },
-                      "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
+                      "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
                       "response": {
                         "$ref": "FolderEntities"
                       },
@@ -732,6 +784,7 @@
               "methods": {
                 "update": {
                   "description": "Moves entities to a GTM Folder.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.move_folders.update",
                   "parameterOrder": [
@@ -777,7 +830,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
                   "request": {
                     "$ref": "Folder"
                   },
@@ -791,6 +844,7 @@
               "methods": {
                 "update": {
                   "description": "Re-generates the authorization code for a GTM Environment.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.reauthorize_environments.update",
                   "parameterOrder": [
@@ -818,7 +872,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
                   "request": {
                     "$ref": "Environment"
                   },
@@ -835,6 +889,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a GTM Tag.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.tags.create",
                   "parameterOrder": [
@@ -855,7 +910,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/tags",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
                   "request": {
                     "$ref": "Tag"
                   },
@@ -868,6 +923,7 @@
                 },
                 "delete": {
                   "description": "Deletes a GTM Tag.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.tags.delete",
                   "parameterOrder": [
@@ -895,13 +951,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
                 },
                 "get": {
                   "description": "Gets a GTM Tag.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.tags.get",
                   "parameterOrder": [
@@ -929,7 +986,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "response": {
                     "$ref": "Tag"
                   },
@@ -940,6 +997,7 @@
                 },
                 "list": {
                   "description": "Lists all GTM Tags of a Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.tags.list",
                   "parameterOrder": [
@@ -960,7 +1018,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/tags",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
                   "response": {
                     "$ref": "ListTagsResponse"
                   },
@@ -971,6 +1029,7 @@
                 },
                 "update": {
                   "description": "Updates a GTM Tag.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.tags.update",
                   "parameterOrder": [
@@ -992,7 +1051,7 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the tag in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the tag in\nstorage.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1003,7 +1062,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
                   "request": {
                     "$ref": "Tag"
                   },
@@ -1020,6 +1079,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a GTM Trigger.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.triggers.create",
                   "parameterOrder": [
@@ -1040,7 +1100,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/triggers",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
                   "request": {
                     "$ref": "Trigger"
                   },
@@ -1053,6 +1113,7 @@
                 },
                 "delete": {
                   "description": "Deletes a GTM Trigger.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.triggers.delete",
                   "parameterOrder": [
@@ -1080,13 +1141,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
                 },
                 "get": {
                   "description": "Gets a GTM Trigger.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.triggers.get",
                   "parameterOrder": [
@@ -1114,7 +1176,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "response": {
                     "$ref": "Trigger"
                   },
@@ -1125,6 +1187,7 @@
                 },
                 "list": {
                   "description": "Lists all GTM Triggers of a Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.triggers.list",
                   "parameterOrder": [
@@ -1145,7 +1208,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/triggers",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
                   "response": {
                     "$ref": "ListTriggersResponse"
                   },
@@ -1156,6 +1219,7 @@
                 },
                 "update": {
                   "description": "Updates a GTM Trigger.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.triggers.update",
                   "parameterOrder": [
@@ -1177,7 +1241,7 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the trigger in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the trigger\nin storage.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1188,7 +1252,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
                   "request": {
                     "$ref": "Trigger"
                   },
@@ -1205,6 +1269,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a GTM Variable.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.variables.create",
                   "parameterOrder": [
@@ -1225,7 +1290,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/variables",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
                   "request": {
                     "$ref": "Variable"
                   },
@@ -1238,6 +1303,7 @@
                 },
                 "delete": {
                   "description": "Deletes a GTM Variable.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.variables.delete",
                   "parameterOrder": [
@@ -1265,13 +1331,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
                 },
                 "get": {
                   "description": "Gets a GTM Variable.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.variables.get",
                   "parameterOrder": [
@@ -1299,7 +1366,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "response": {
                     "$ref": "Variable"
                   },
@@ -1310,6 +1377,7 @@
                 },
                 "list": {
                   "description": "Lists all GTM Variables of a Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.variables.list",
                   "parameterOrder": [
@@ -1330,7 +1398,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/variables",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
                   "response": {
                     "$ref": "ListVariablesResponse"
                   },
@@ -1341,6 +1409,7 @@
                 },
                 "update": {
                   "description": "Updates a GTM Variable.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.variables.update",
                   "parameterOrder": [
@@ -1362,7 +1431,7 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the variable in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the variable\nin storage.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1373,7 +1442,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
                   "request": {
                     "$ref": "Variable"
                   },
@@ -1390,6 +1459,7 @@
               "methods": {
                 "create": {
                   "description": "Creates a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.versions.create",
                   "parameterOrder": [
@@ -1410,7 +1480,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
                   "request": {
                     "$ref": "CreateContainerVersionRequestVersionOptions"
                   },
@@ -1423,6 +1493,7 @@
                 },
                 "delete": {
                   "description": "Deletes a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "httpMethod": "DELETE",
                   "id": "tagmanager.accounts.containers.versions.delete",
                   "parameterOrder": [
@@ -1450,13 +1521,14 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containerversions"
                   ]
                 },
                 "get": {
                   "description": "Gets a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.versions.get",
                   "parameterOrder": [
@@ -1478,13 +1550,13 @@
                       "type": "string"
                     },
                     "containerVersionId": {
-                      "description": "The GTM Container Version ID. Specify published to retrieve the currently published version.",
+                      "description": "The GTM Container Version ID. Specify \u003ccode\u003epublished\u003c/code\u003e to retrieve\nthe currently published version.",
                       "location": "path",
                       "required": true,
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "response": {
                     "$ref": "ContainerVersion"
                   },
@@ -1496,6 +1568,7 @@
                 },
                 "list": {
                   "description": "Lists all Container Versions of a GTM Container.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
                   "httpMethod": "GET",
                   "id": "tagmanager.accounts.containers.versions.list",
                   "parameterOrder": [
@@ -1528,7 +1601,7 @@
                       "type": "boolean"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
                   "response": {
                     "$ref": "ListContainerVersionsResponse"
                   },
@@ -1540,6 +1613,7 @@
                 },
                 "publish": {
                   "description": "Publishes a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.versions.publish",
                   "parameterOrder": [
@@ -1567,12 +1641,12 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the container version in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer version in storage.",
                       "location": "query",
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
                   "response": {
                     "$ref": "PublishContainerVersionResponse"
                   },
@@ -1581,7 +1655,8 @@
                   ]
                 },
                 "restore": {
-                  "description": "Restores a Container Version. This will overwrite the container's current configuration (including its variables, triggers and tags). The operation will not have any effect on the version that is being served (i.e. the published version).",
+                  "description": "Restores a Container Version. This will overwrite the container's current\nconfiguration (including its variables, triggers and tags). The operation\nwill not have any effect on the version that is being served (i.e. the\npublished version).",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.versions.restore",
                   "parameterOrder": [
@@ -1609,7 +1684,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
                   "response": {
                     "$ref": "ContainerVersion"
                   },
@@ -1619,6 +1694,7 @@
                 },
                 "undelete": {
                   "description": "Undeletes a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
                   "httpMethod": "POST",
                   "id": "tagmanager.accounts.containers.versions.undelete",
                   "parameterOrder": [
@@ -1646,7 +1722,7 @@
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
                   "response": {
                     "$ref": "ContainerVersion"
                   },
@@ -1656,6 +1732,7 @@
                 },
                 "update": {
                   "description": "Updates a Container Version.",
+                  "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "httpMethod": "PUT",
                   "id": "tagmanager.accounts.containers.versions.update",
                   "parameterOrder": [
@@ -1683,12 +1760,12 @@
                       "type": "string"
                     },
                     "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the container version in storage.",
+                      "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer version in storage.",
                       "location": "query",
                       "type": "string"
                     }
                   },
-                  "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+                  "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
                   "request": {
                     "$ref": "ContainerVersion"
                   },
@@ -1707,6 +1784,7 @@
           "methods": {
             "create": {
               "description": "Creates a user's Account \u0026 Container Permissions.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/permissions",
               "httpMethod": "POST",
               "id": "tagmanager.accounts.permissions.create",
               "parameterOrder": [
@@ -1720,7 +1798,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/permissions",
+              "path": "tagmanager/v1/accounts/{accountId}/permissions",
               "request": {
                 "$ref": "UserAccess"
               },
@@ -1732,7 +1810,8 @@
               ]
             },
             "delete": {
-              "description": "Removes a user from the account, revoking access to it and all of its containers.",
+              "description": "Removes a user from the account, revoking access to it and all of its\ncontainers.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "httpMethod": "DELETE",
               "id": "tagmanager.accounts.permissions.delete",
               "parameterOrder": [
@@ -1753,13 +1832,14 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/permissions/{permissionId}",
+              "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "scopes": [
                 "https://www.googleapis.com/auth/tagmanager.manage.users"
               ]
             },
             "get": {
               "description": "Gets a user's Account \u0026 Container Permissions.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "httpMethod": "GET",
               "id": "tagmanager.accounts.permissions.get",
               "parameterOrder": [
@@ -1780,7 +1860,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/permissions/{permissionId}",
+              "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "response": {
                 "$ref": "UserAccess"
               },
@@ -1789,7 +1869,8 @@
               ]
             },
             "list": {
-              "description": "List all users that have access to the account along with Account and Container Permissions granted to each of them.",
+              "description": "List all users that have access to the account along with Account and\nContainer Permissions granted to each of them.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/permissions",
               "httpMethod": "GET",
               "id": "tagmanager.accounts.permissions.list",
               "parameterOrder": [
@@ -1797,13 +1878,13 @@
               ],
               "parameters": {
                 "accountId": {
-                  "description": "The GTM Account ID. @required tagmanager.accounts.permissions.list",
+                  "description": "The GTM Account ID.",
                   "location": "path",
                   "required": true,
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/permissions",
+              "path": "tagmanager/v1/accounts/{accountId}/permissions",
               "response": {
                 "$ref": "ListAccountUsersResponse"
               },
@@ -1813,6 +1894,7 @@
             },
             "update": {
               "description": "Updates a user's Account \u0026 Container Permissions.",
+              "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "httpMethod": "PUT",
               "id": "tagmanager.accounts.permissions.update",
               "parameterOrder": [
@@ -1833,7 +1915,7 @@
                   "type": "string"
                 }
               },
-              "path": "accounts/{accountId}/permissions/{permissionId}",
+              "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
               "request": {
                 "$ref": "UserAccess"
               },
@@ -1849,7 +1931,7 @@
       }
     }
   },
-  "revision": "20190516",
+  "revision": "20190617",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -1861,15 +1943,15 @@
           "type": "string"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Account as computed at storage time. This value is recomputed whenever the account is modified.",
+          "description": "The fingerprint of the GTM Account as computed at storage time.\nThis value is recomputed whenever the account is modified.",
           "type": "string"
         },
         "name": {
-          "description": "Account display name.",
+          "description": "Account display name.\n@mutable tagmanager.accounts.create\n@mutable tagmanager.accounts.update",
           "type": "string"
         },
         "shareData": {
-          "description": "Whether the account shares data anonymously with Google and others.",
+          "description": "Whether the account shares data anonymously with Google and others.\n@mutable tagmanager.accounts.create\n@mutable tagmanager.accounts.update",
           "type": "boolean"
         }
       },
@@ -1885,23 +1967,23 @@
               "tagmanager.accounts.permissions.create"
             ]
           },
-          "description": "List of Account permissions. Valid account permissions are read and manage.",
+          "description": "List of Account permissions.\nValid account permissions are \u003ccode\u003eread\u003c/code\u003e and \u003ccode\u003emanage\u003c/code\u003e.\n@mutable tagmanager.accounts.permissions.create\n@mutable tagmanager.accounts.permissions.update",
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
           "items": {
             "enum": [
-              "delete",
-              "edit",
-              "editWorkspace",
-              "manage",
-              "publish",
-              "read"
-            ],
-            "enumDescriptions": [
-              "",
-              "",
-              "",
-              "",
-              "",
-              ""
+              "READ",
+              "EDIT",
+              "PUBLISH",
+              "DELETE",
+              "MANAGE",
+              "EDIT_WORKSPACE"
             ],
             "type": "string"
           },
@@ -1921,7 +2003,7 @@
               "tagmanager.accounts.containers.triggers.update"
             ]
           },
-          "description": "A list of named parameters (key/value), depending on the condition's type. Notes: \n- For binary operators, include parameters named arg0 and arg1 for specifying the left and right operands, respectively. \n- At this time, the left operand (arg0) must be a reference to a variable. \n- For case-insensitive Regex matching, include a boolean parameter named ignore_case that is set to true. If not specified or set to any other value, the matching will be case sensitive. \n- To negate an operator, include a boolean parameter named negate boolean parameter that is set to true.",
+          "description": "A list of named parameters (key/value), depending on the condition's type.\nNotes:\u003cul\u003e\n\u003cli\u003eFor binary operators, include parameters named \u003ccode\u003earg0\u003c/code\u003e and\n   \u003ccode\u003earg1\u003c/code\u003e for specifying the left and right operands,\n   respectively.\u003c/li\u003e\n\u003cli\u003eAt this time, the left operand (\u003ccode\u003earg0\u003c/code\u003e) must be a reference\n    to a variable.\u003c/li\u003e\n\u003cli\u003eFor case-insensitive Regex matching, include a boolean parameter named\n    \u003ccode\u003eignore_case\u003c/code\u003e that is set to \u003ccode\u003etrue\u003c/code\u003e.\n    If not specified or set to any other value, the matching will be case\n    sensitive.\u003c/li\u003e\n\u003cli\u003eTo negate an operator, include a boolean parameter named\n    \u003ccode\u003enegate\u003c/code\u003e boolean parameter that is set to \u003ccode\u003etrue\u003c/code\u003e.\n    \u003c/li\u003e\n\u003c/ul\u003e\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -1934,19 +2016,19 @@
               "tagmanager.accounts.containers.triggers.update"
             ]
           },
-          "description": "The type of operator for this condition.",
+          "description": "The type of operator for this condition.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "enum": [
-            "contains",
-            "cssSelector",
-            "endsWith",
-            "equals",
-            "greater",
-            "greaterOrEquals",
-            "less",
-            "lessOrEquals",
-            "matchRegex",
-            "startsWith",
-            "urlMatches"
+            "EQUALS",
+            "CONTAINS",
+            "STARTS_WITH",
+            "ENDS_WITH",
+            "MATCH_REGEX",
+            "GREATER",
+            "GREATER_OR_EQUALS",
+            "LESS",
+            "LESS_OR_EQUALS",
+            "CSS_SELECTOR",
+            "URL_MATCHES"
           ],
           "enumDescriptions": [
             "",
@@ -1979,233 +2061,233 @@
           "type": "string"
         },
         "domainName": {
-          "description": "Optional list of domain names associated with the Container.",
+          "description": "Optional list of domain names associated with the Container.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "enabledBuiltInVariable": {
-          "description": "List of enabled built-in variables. Valid values include: pageUrl, pageHostname, pagePath, referrer, event, clickElement, clickClasses, clickId, clickTarget, clickUrl, clickText, formElement, formClasses, formId, formTarget, formUrl, formText, errorMessage, errorUrl, errorLine, newHistoryFragment, oldHistoryFragment, newHistoryState, oldHistoryState, historySource, containerVersion, debugMode, randomNumber, containerId.",
+          "description": "List of enabled built-in variables. Valid values include: \u003ccode\u003epageUrl,\npageHostname, pagePath, referrer, event, clickElement, clickClasses,\nclickId, clickTarget, clickUrl, clickText, formElement, formClasses,\nformId, formTarget, formUrl, formText, errorMessage, errorUrl, errorLine,\nnewHistoryFragment, oldHistoryFragment, newHistoryState, oldHistoryState,\nhistorySource, containerVersion, debugMode, randomNumber,\ncontainerId\u003c/code\u003e.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            "For web or mobile.",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "For web or mobile.",
+            "",
+            "For web or mobile.",
+            "For web or mobile.",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
           "items": {
             "enum": [
-              "advertiserId",
-              "advertisingTrackingEnabled",
-              "ampBrowserLanguage",
-              "ampCanonicalHost",
-              "ampCanonicalPath",
-              "ampCanonicalUrl",
-              "ampClientId",
-              "ampClientMaxScrollX",
-              "ampClientMaxScrollY",
-              "ampClientScreenHeight",
-              "ampClientScreenWidth",
-              "ampClientScrollX",
-              "ampClientScrollY",
-              "ampClientTimestamp",
-              "ampClientTimezone",
-              "ampGtmEvent",
-              "ampPageDownloadTime",
-              "ampPageLoadTime",
-              "ampPageViewId",
-              "ampReferrer",
-              "ampTitle",
-              "ampTotalEngagedTime",
-              "appId",
-              "appName",
-              "appVersionCode",
-              "appVersionName",
-              "clickClasses",
-              "clickElement",
-              "clickId",
-              "clickTarget",
-              "clickText",
-              "clickUrl",
-              "containerId",
-              "containerVersion",
-              "debugMode",
-              "deviceName",
-              "elementVisibilityFirstTime",
-              "elementVisibilityRatio",
-              "elementVisibilityRecentTime",
-              "elementVisibilityTime",
-              "environmentName",
-              "errorLine",
-              "errorMessage",
-              "errorUrl",
-              "event",
-              "eventName",
-              "firebaseEventParameterCampaign",
-              "firebaseEventParameterCampaignAclid",
-              "firebaseEventParameterCampaignAnid",
-              "firebaseEventParameterCampaignClickTimestamp",
-              "firebaseEventParameterCampaignContent",
-              "firebaseEventParameterCampaignCp1",
-              "firebaseEventParameterCampaignGclid",
-              "firebaseEventParameterCampaignSource",
-              "firebaseEventParameterCampaignTerm",
-              "firebaseEventParameterCurrency",
-              "firebaseEventParameterDynamicLinkAcceptTime",
-              "firebaseEventParameterDynamicLinkLinkid",
-              "firebaseEventParameterNotificationMessageDeviceTime",
-              "firebaseEventParameterNotificationMessageId",
-              "firebaseEventParameterNotificationMessageName",
-              "firebaseEventParameterNotificationMessageTime",
-              "firebaseEventParameterNotificationTopic",
-              "firebaseEventParameterPreviousAppVersion",
-              "firebaseEventParameterPreviousOsVersion",
-              "firebaseEventParameterPrice",
-              "firebaseEventParameterProductId",
-              "firebaseEventParameterQuantity",
-              "firebaseEventParameterValue",
-              "formClasses",
-              "formElement",
-              "formId",
-              "formTarget",
-              "formText",
-              "formUrl",
-              "historySource",
-              "htmlId",
-              "language",
-              "newHistoryFragment",
-              "newHistoryState",
-              "newHistoryUrl",
-              "oldHistoryFragment",
-              "oldHistoryState",
-              "oldHistoryUrl",
-              "osVersion",
-              "pageHostname",
-              "pagePath",
-              "pageUrl",
-              "platform",
-              "randomNumber",
-              "referrer",
-              "resolution",
-              "scrollDepthDirection",
-              "scrollDepthThreshold",
-              "scrollDepthUnits",
-              "sdkVersion",
-              "videoCurrentTime",
-              "videoDuration",
-              "videoPercent",
-              "videoProvider",
-              "videoStatus",
-              "videoTitle",
-              "videoUrl",
-              "videoVisible"
-            ],
-            "enumDescriptions": [
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              "",
-              ""
+              "PAGE_URL",
+              "PAGE_HOSTNAME",
+              "PAGE_PATH",
+              "REFERRER",
+              "EVENT",
+              "CLICK_ELEMENT",
+              "CLICK_CLASSES",
+              "CLICK_ID",
+              "CLICK_TARGET",
+              "CLICK_URL",
+              "CLICK_TEXT",
+              "FORM_ELEMENT",
+              "FORM_CLASSES",
+              "FORM_ID",
+              "FORM_TARGET",
+              "FORM_URL",
+              "FORM_TEXT",
+              "ENVIRONMENT_NAME",
+              "ERROR_MESSAGE",
+              "ERROR_URL",
+              "ERROR_LINE",
+              "NEW_HISTORY_URL",
+              "OLD_HISTORY_URL",
+              "NEW_HISTORY_FRAGMENT",
+              "OLD_HISTORY_FRAGMENT",
+              "NEW_HISTORY_STATE",
+              "OLD_HISTORY_STATE",
+              "HISTORY_SOURCE",
+              "CONTAINER_VERSION",
+              "DEBUG_MODE",
+              "RANDOM_NUMBER",
+              "CONTAINER_ID",
+              "APP_ID",
+              "APP_NAME",
+              "APP_VERSION_CODE",
+              "APP_VERSION_NAME",
+              "LANGUAGE",
+              "OS_VERSION",
+              "PLATFORM",
+              "SDK_VERSION",
+              "DEVICE_NAME",
+              "RESOLUTION",
+              "ADVERTISER_ID",
+              "ADVERTISING_TRACKING_ENABLED",
+              "HTML_ID",
+              "AMP_BROWSER_LANGUAGE",
+              "AMP_CANONICAL_PATH",
+              "AMP_CANONICAL_URL",
+              "AMP_CANONICAL_HOST",
+              "AMP_REFERRER",
+              "AMP_TITLE",
+              "AMP_CLIENT_ID",
+              "AMP_CLIENT_TIMEZONE",
+              "AMP_CLIENT_TIMESTAMP",
+              "AMP_CLIENT_SCREEN_WIDTH",
+              "AMP_CLIENT_SCREEN_HEIGHT",
+              "AMP_CLIENT_SCROLL_X",
+              "AMP_CLIENT_SCROLL_Y",
+              "AMP_CLIENT_MAX_SCROLL_X",
+              "AMP_CLIENT_MAX_SCROLL_Y",
+              "AMP_TOTAL_ENGAGED_TIME",
+              "AMP_PAGE_VIEW_ID",
+              "AMP_PAGE_LOAD_TIME",
+              "AMP_PAGE_DOWNLOAD_TIME",
+              "AMP_GTM_EVENT",
+              "EVENT_NAME",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_ACLID",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_ANID",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CLICK_TIMESTAMP",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CONTENT",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CP1",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_GCLID",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_SOURCE",
+              "FIREBASE_EVENT_PARAMETER_CAMPAIGN_TERM",
+              "FIREBASE_EVENT_PARAMETER_CURRENCY",
+              "FIREBASE_EVENT_PARAMETER_DYNAMIC_LINK_ACCEPT_TIME",
+              "FIREBASE_EVENT_PARAMETER_DYNAMIC_LINK_LINKID",
+              "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_DEVICE_TIME",
+              "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_ID",
+              "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_NAME",
+              "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_TIME",
+              "FIREBASE_EVENT_PARAMETER_NOTIFICATION_TOPIC",
+              "FIREBASE_EVENT_PARAMETER_PREVIOUS_APP_VERSION",
+              "FIREBASE_EVENT_PARAMETER_PREVIOUS_OS_VERSION",
+              "FIREBASE_EVENT_PARAMETER_PRICE",
+              "FIREBASE_EVENT_PARAMETER_PRODUCT_ID",
+              "FIREBASE_EVENT_PARAMETER_QUANTITY",
+              "FIREBASE_EVENT_PARAMETER_VALUE",
+              "VIDEO_PROVIDER",
+              "VIDEO_URL",
+              "VIDEO_TITLE",
+              "VIDEO_DURATION",
+              "VIDEO_PERCENT",
+              "VIDEO_VISIBLE",
+              "VIDEO_STATUS",
+              "VIDEO_CURRENT_TIME",
+              "SCROLL_DEPTH_THRESHOLD",
+              "SCROLL_DEPTH_UNITS",
+              "SCROLL_DEPTH_DIRECTION",
+              "ELEMENT_VISIBILITY_RATIO",
+              "ELEMENT_VISIBILITY_TIME",
+              "ELEMENT_VISIBILITY_FIRST_TIME",
+              "ELEMENT_VISIBILITY_RECENT_TIME"
             ],
             "type": "string"
           },
           "type": "array"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Container as computed at storage time. This value is recomputed whenever the account is modified.",
+          "description": "The fingerprint of the GTM Container as computed at storage time.  This\nvalue is recomputed whenever the account is modified.",
           "type": "string"
         },
         "name": {
@@ -2214,11 +2296,11 @@
               "tagmanager.accounts.containers.create"
             ]
           },
-          "description": "Container display name.",
+          "description": "Container display name.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
           "type": "string"
         },
         "notes": {
-          "description": "Container Notes.",
+          "description": "Container Notes.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
           "type": "string"
         },
         "publicId": {
@@ -2231,7 +2313,7 @@
               "tagmanager.accounts.containers.create"
             ]
           },
-          "description": "Container Country ID.",
+          "description": "Container Country ID.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
           "type": "string"
         },
         "timeZoneId": {
@@ -2240,32 +2322,33 @@
               "tagmanager.accounts.containers.create"
             ]
           },
-          "description": "Container Time Zone ID.",
+          "description": "Container Time Zone ID.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
           "type": "string"
         },
         "usageContext": {
           "annotations": {
             "required": [
-              "tagmanager.accounts.containers.create"
+              "tagmanager.accounts.containers.create",
+              "tagmanager.accounts.containers.update"
             ]
           },
-          "description": "List of Usage Contexts for the Container. Valid values include: web, android, ios.",
+          "description": "List of Usage Contexts for the Container. Valid values include: \u003ccode\u003eweb,\nandroid, ios\u003c/code\u003e.\n@mutable tagmanager.accounts.containers.create\n@mutable tagmanager.accounts.containers.update",
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
           "items": {
             "enum": [
-              "amp",
-              "android",
-              "androidSdk5",
-              "ios",
-              "iosSdk5",
-              "web"
-            ],
-            "enumDescriptions": [
-              "",
-              "",
-              "",
-              "",
-              "",
-              ""
+              "WEB",
+              "ANDROID",
+              "IOS",
+              "ANDROID_SDK_5",
+              "IOS_SDK_5",
+              "AMP"
             ],
             "type": "string"
           },
@@ -2279,27 +2362,27 @@
       "id": "ContainerAccess",
       "properties": {
         "containerId": {
-          "description": "GTM Container ID.",
+          "description": "GTM Container ID.\n@mutable tagmanager.accounts.permissions.create\n@mutable tagmanager.accounts.permissions.update",
           "type": "string"
         },
         "permission": {
-          "description": "List of Container permissions. Valid container permissions are: read, edit, delete, publish.",
+          "description": "List of Container permissions.\nValid container permissions are: \u003ccode\u003eread, edit, delete, publish\u003c/code\u003e.\n@mutable tagmanager.accounts.permissions.create\n@mutable tagmanager.accounts.permissions.update",
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
           "items": {
             "enum": [
-              "delete",
-              "edit",
-              "editWorkspace",
-              "manage",
-              "publish",
-              "read"
-            ],
-            "enumDescriptions": [
-              "",
-              "",
-              "",
-              "",
-              "",
-              ""
+              "READ",
+              "EDIT",
+              "PUBLISH",
+              "DELETE",
+              "MANAGE",
+              "EDIT_WORKSPACE"
             ],
             "type": "string"
           },
@@ -2333,7 +2416,7 @@
           "type": "boolean"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Container Version as computed at storage time. This value is recomputed whenever the container version is modified.",
+          "description": "The fingerprint of the GTM Container Version as computed at\nstorage time. This value is recomputed whenever the container version is\nmodified.",
           "type": "string"
         },
         "folder": {
@@ -2351,11 +2434,11 @@
           "type": "array"
         },
         "name": {
-          "description": "Container version display name.",
+          "description": "Container version display name.\n@mutable tagmanager.accounts.containers.versions.update",
           "type": "string"
         },
         "notes": {
-          "description": "User notes on how to apply this container version in the container.",
+          "description": "User notes on how to apply this container version in the\ncontainer.\n@mutable tagmanager.accounts.containers.versions.update",
           "type": "string"
         },
         "rule": {
@@ -2449,7 +2532,7 @@
           "type": "string"
         },
         "quickPreview": {
-          "description": "The creation of this version may be for quick preview and shouldn't be saved.",
+          "description": "The creation of this version may be for quick preview and\nshouldn't be saved.",
           "type": "boolean"
         }
       },
@@ -2471,7 +2554,7 @@
       "type": "object"
     },
     "Environment": {
-      "description": "Represents a Google Tag Manager Environment. Note that a user can create, delete and update environments of type USER, but can only update the enable_debug and url fields of environments of other types.",
+      "description": "Represents a Google Tag Manager Environment. Note that a user can create,\ndelete and update environments of type USER, but can only update the\nenable_debug and url fields of environments of other types.",
       "id": "Environment",
       "properties": {
         "accountId": {
@@ -2492,15 +2575,14 @@
           "type": "string"
         },
         "containerVersionId": {
-          "description": "",
           "type": "string"
         },
         "description": {
-          "description": "The environment description. Can be set or changed only on USER type environments.",
+          "description": "The environment description. Can be set or changed only on USER type\nenvironments.\n@mutable tagmanager.accounts.containers.environments.create\n@mutable tagmanager.accounts.containers.environments.update",
           "type": "string"
         },
         "enableDebug": {
-          "description": "Whether or not to enable debug by default on for the environment.",
+          "description": "Whether or not to enable debug by default on for the environment.\n@mutable tagmanager.accounts.containers.environments.create\n@mutable tagmanager.accounts.containers.environments.update",
           "type": "boolean"
         },
         "environmentId": {
@@ -2508,7 +2590,7 @@
           "type": "string"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM environment as computed at storage time. This value is recomputed whenever the environment is modified.",
+          "description": "The fingerprint of the GTM environment as computed at storage time.\nThis value is recomputed whenever the environment is modified.",
           "type": "string"
         },
         "name": {
@@ -2518,27 +2600,27 @@
               "tagmanager.accounts.containers.environments.update"
             ]
           },
-          "description": "The environment display name. Can be set or changed only on USER type environments.",
+          "description": "The environment display name. Can be set or changed only on USER type\nenvironments.\n@mutable tagmanager.accounts.containers.environments.create\n@mutable tagmanager.accounts.containers.environments.update",
           "type": "string"
         },
         "type": {
           "description": "The type of this environment.",
           "enum": [
-            "draft",
-            "latest",
-            "live",
-            "user"
+            "USER",
+            "LIVE",
+            "LATEST",
+            "DRAFT"
           ],
           "enumDescriptions": [
-            "",
-            "",
-            "",
-            ""
+            "Used for user defined environments.",
+            "Used for Live environment, which points to the live published container\nversion.",
+            "Used for Latest environment, which points to the latest created container\nversion.",
+            "Used for Draft environment, which points to the single draft in\nthe container."
           ],
           "type": "string"
         },
         "url": {
-          "description": "Default preview page url for the environment.",
+          "description": "Default preview page url for the environment.\n@mutable tagmanager.accounts.containers.environments.create\n@mutable tagmanager.accounts.containers.environments.update",
           "type": "string"
         }
       },
@@ -2557,7 +2639,7 @@
           "type": "string"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Folder as computed at storage time. This value is recomputed whenever the folder is modified.",
+          "description": "The fingerprint of the GTM Folder as computed at storage time.\nThis value is recomputed whenever the folder is modified.",
           "type": "string"
         },
         "folderId": {
@@ -2571,7 +2653,7 @@
               "tagmanager.accounts.containers.folders.update"
             ]
           },
-          "description": "Folder display name.",
+          "description": "Folder display name.\n@mutable tagmanager.accounts.containers.folders.create\n@mutable tagmanager.accounts.containers.folders.update",
           "type": "string"
         }
       },
@@ -2751,21 +2833,21 @@
           "type": "string"
         },
         "disablingRuleId": {
-          "description": "For mobile containers only: A list of rule IDs for disabling conditional macros; the macro is enabled if one of the enabling rules is true while all the disabling rules are false. Treated as an unordered set.",
+          "description": "For mobile containers only: A list of rule IDs for disabling conditional\nmacros; the macro is enabled if one of the enabling rules is true while all\nthe disabling rules are false. Treated as an unordered set.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "enablingRuleId": {
-          "description": "For mobile containers only: A list of rule IDs for enabling conditional macros; the macro is enabled if one of the enabling rules is true while all the disabling rules are false. Treated as an unordered set.",
+          "description": "For mobile containers only: A list of rule IDs for enabling conditional\nmacros; the macro is enabled if one of the enabling rules is true while all\nthe disabling rules are false. Treated as an unordered set.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Macro as computed at storage time. This value is recomputed whenever the macro is modified.",
+          "description": "The fingerprint of the GTM Macro as computed at storage time.\nThis value is recomputed whenever the macro is modified.",
           "type": "string"
         },
         "macroId": {
@@ -2773,15 +2855,15 @@
           "type": "string"
         },
         "name": {
-          "description": "Macro display name.",
+          "description": "Macro display name.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "type": "string"
         },
         "notes": {
-          "description": "User notes on how to apply this macro in the container.",
+          "description": "User notes on how to apply this macro in the container.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "type": "string"
         },
         "parameter": {
-          "description": "The macro's parameters.",
+          "description": "The macro's parameters.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -2792,17 +2874,17 @@
           "type": "string"
         },
         "scheduleEndMs": {
-          "description": "The end timestamp in milliseconds to schedule a macro.",
+          "description": "The end timestamp in milliseconds to schedule a macro.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "format": "int64",
           "type": "string"
         },
         "scheduleStartMs": {
-          "description": "The start timestamp in milliseconds to schedule a macro.",
+          "description": "The start timestamp in milliseconds to schedule a macro.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "format": "int64",
           "type": "string"
         },
         "type": {
-          "description": "GTM Macro Type.",
+          "description": "GTM Macro Type.\n@mutable tagmanager.accounts.containers.macros.create\n@mutable tagmanager.accounts.containers.macros.update",
           "type": "string"
         }
       },
@@ -2813,18 +2895,18 @@
       "id": "Parameter",
       "properties": {
         "key": {
-          "description": "The named key that uniquely identifies a parameter. Required for top-level parameters, as well as map values. Ignored for list values.",
+          "description": "The named key that uniquely identifies a parameter.  Required for top-level\nparameters, as well as map values.  Ignored for list values.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "string"
         },
         "list": {
-          "description": "This list parameter's parameters (keys will be ignored).",
+          "description": "This list parameter's parameters (keys will be ignored).\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "$ref": "Parameter"
           },
           "type": "array"
         },
         "map": {
-          "description": "This map parameter's parameters (must have keys; keys must be unique).",
+          "description": "This map parameter's parameters (must have keys; keys must be unique).\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -2841,17 +2923,17 @@
               "tagmanager.accounts.containers.variables.update"
             ]
           },
-          "description": "The parameter type. Valid values are: \n- boolean: The value represents a boolean, represented as 'true' or 'false' \n- integer: The value represents a 64-bit signed integer value, in base 10 \n- list: A list of parameters should be specified \n- map: A map of parameters should be specified \n- template: The value represents any text; this can include variable references (even variable references that might return non-string types) \n- trigger_reference: The value represents a trigger, represented as the trigger id",
+          "description": "The parameter type.  Valid values are:\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eboolean\u003c/code\u003e: The value represents a boolean, represented as\n    'true' or 'false'\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003einteger\u003c/code\u003e: The value represents a 64-bit signed integer\n    value, in base 10\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elist\u003c/code\u003e: A list of parameters should be specified\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emap\u003c/code\u003e: A map of parameters should be specified\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etemplate\u003c/code\u003e: The value represents any text; this can include\n    variable references (even variable references that might return\n    non-string types)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etrigger_reference\u003c/code\u003e: The value represents a trigger,\n    represented as the trigger id\u003c/li\u003e\n\u003c/ul\u003e\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "enum": [
-            "boolean",
-            "integer",
-            "list",
-            "map",
-            "template",
-            "triggerReference"
+            "TEMPLATE",
+            "INTEGER",
+            "BOOLEAN",
+            "LIST",
+            "MAP",
+            "TRIGGER_REFERENCE"
           ],
           "enumDescriptions": [
-            "",
+            "May include variable references (such as \"{{myVariable}}\").",
             "",
             "",
             "",
@@ -2861,7 +2943,7 @@
           "type": "string"
         },
         "value": {
-          "description": "A parameter's value (may contain variable references such as \"{{myVariable}}\") as appropriate to the specified type.",
+          "description": "A parameter's value (may contain variable references such as\n\"{{myVariable}}\")\nas appropriate to the specified type.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "string"
         }
       },
@@ -2891,7 +2973,7 @@
           "type": "string"
         },
         "condition": {
-          "description": "The list of conditions that make up this rule (implicit AND between them).",
+          "description": "The list of conditions that make up this rule (implicit AND between them).\n@mutable tagmanager.accounts.containers.rules.create\n@mutable tagmanager.accounts.containers.rules.update",
           "items": {
             "$ref": "Condition"
           },
@@ -2902,15 +2984,15 @@
           "type": "string"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Rule as computed at storage time. This value is recomputed whenever the rule is modified.",
+          "description": "The fingerprint of the GTM Rule as computed at storage time.\nThis value is recomputed whenever the rule is modified.",
           "type": "string"
         },
         "name": {
-          "description": "Rule display name.",
+          "description": "Rule display name.\n@mutable tagmanager.accounts.containers.rules.create\n@mutable tagmanager.accounts.containers.rules.update",
           "type": "string"
         },
         "notes": {
-          "description": "User notes on how to apply this rule in the container.",
+          "description": "User notes on how to apply this rule in the container.\n@mutable tagmanager.accounts.containers.rules.create\n@mutable tagmanager.accounts.containers.rules.update",
           "type": "string"
         },
         "ruleId": {
@@ -2924,7 +3006,7 @@
       "id": "SetupTag",
       "properties": {
         "stopOnSetupFailure": {
-          "description": "If true, fire the main tag if and only if the setup tag fires successfully. If false, fire the main tag regardless of setup tag firing status.",
+          "description": "If true, fire the main tag if and only if the setup tag fires\nsuccessfully.\nIf false, fire the main tag regardless of setup tag firing status.",
           "type": "boolean"
         },
         "tagName": {
@@ -2943,14 +3025,14 @@
           "type": "string"
         },
         "blockingRuleId": {
-          "description": "Blocking rule IDs. If any of the listed rules evaluate to true, the tag will not fire.",
+          "description": "Blocking rule IDs. If any of the listed rules evaluate to true, the tag\n    will not fire.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "blockingTriggerId": {
-          "description": "Blocking trigger IDs. If any of the listed triggers evaluate to true, the tag will not fire.",
+          "description": "Blocking trigger IDs. If any of the listed triggers evaluate to true, the\ntag\n    will not fire.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "type": "string"
           },
@@ -2961,25 +3043,25 @@
           "type": "string"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Tag as computed at storage time. This value is recomputed whenever the tag is modified.",
+          "description": "The fingerprint of the GTM Tag as computed at storage time.\nThis value is recomputed whenever the tag is modified.",
           "type": "string"
         },
         "firingRuleId": {
-          "description": "Firing rule IDs. A tag will fire when any of the listed rules are true and all of its blockingRuleIds (if any specified) are false.",
+          "description": "Firing rule IDs. A tag will fire when any of the listed rules are true and\n    all of its \u003ccode\u003eblockingRuleIds\u003c/code\u003e (if any specified) are false.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "firingTriggerId": {
-          "description": "Firing trigger IDs. A tag will fire when any of the listed triggers are true and all of its blockingTriggerIds (if any specified) are false.",
+          "description": "Firing trigger IDs. A tag will fire when any of the listed triggers are\ntrue and all of its \u003ccode\u003eblockingTriggerIds\u003c/code\u003e (if any specified) are\nfalse.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "liveOnly": {
-          "description": "If set to true, this tag will only fire in the live environment (e.g. not in preview or debug mode).",
+          "description": "If set to true, this tag will only fire in the live environment (e.g. not\nin preview or debug mode).\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "boolean"
         },
         "name": {
@@ -2989,15 +3071,15 @@
               "tagmanager.accounts.containers.tags.update"
             ]
           },
-          "description": "Tag display name.",
+          "description": "Tag display name.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "string"
         },
         "notes": {
-          "description": "User notes on how to apply this tag in the container.",
+          "description": "User notes on how to apply this tag in the container.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "string"
         },
         "parameter": {
-          "description": "The tag's parameters.",
+          "description": "The tag's parameters.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -3008,20 +3090,20 @@
           "type": "string"
         },
         "paused": {
-          "description": "True if the tag is paused.",
+          "description": "True if the tag is paused.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "boolean"
         },
         "priority": {
           "$ref": "Parameter",
-          "description": "User defined numeric priority of the tag. Tags are fired asynchronously in order of priority. Tags with higher numeric value fire first. A tag's priority can be a positive or negative value. The default value is 0."
+          "description": "User defined numeric priority of the tag. Tags are fired asynchronously in\norder of priority. Tags with higher numeric value fire first. A tag's\npriority can be a positive or negative value. The default value is 0.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update"
         },
         "scheduleEndMs": {
-          "description": "The end timestamp in milliseconds to schedule a tag.",
+          "description": "The end timestamp in milliseconds to schedule a tag.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "format": "int64",
           "type": "string"
         },
         "scheduleStartMs": {
-          "description": "The start timestamp in milliseconds to schedule a tag.",
+          "description": "The start timestamp in milliseconds to schedule a tag.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "format": "int64",
           "type": "string"
         },
@@ -3035,14 +3117,14 @@
         "tagFiringOption": {
           "description": "Option to fire this tag.",
           "enum": [
-            "oncePerEvent",
-            "oncePerLoad",
-            "unlimited"
+            "UNLIMITED",
+            "ONCE_PER_EVENT",
+            "ONCE_PER_LOAD"
           ],
           "enumDescriptions": [
-            "",
-            "",
-            ""
+            "Tag can be fired multiple times per event.",
+            "Tag can only be fired per event but can be fired multiple times per load\n(e.g., app load or page load).",
+            "Tag can only be fired per load (e.g., app load or page load)."
           ],
           "type": "string"
         },
@@ -3063,7 +3145,7 @@
               "tagmanager.accounts.containers.tags.create"
             ]
           },
-          "description": "GTM Tag Type.",
+          "description": "GTM Tag Type.\n@mutable tagmanager.accounts.containers.tags.create\n@mutable tagmanager.accounts.containers.tags.update",
           "type": "string"
         }
       },
@@ -3073,7 +3155,7 @@
       "id": "TeardownTag",
       "properties": {
         "stopTeardownOnFailure": {
-          "description": "If true, fire the teardown tag if and only if the main tag fires successfully. If false, fire the teardown tag regardless of main tag firing status.",
+          "description": "If true, fire the teardown tag if and only if the main tag fires\nsuccessfully.\nIf false, fire the teardown tag regardless of main tag firing status.",
           "type": "boolean"
         },
         "tagName": {
@@ -3092,7 +3174,7 @@
           "type": "string"
         },
         "autoEventFilter": {
-          "description": "Used in the case of auto event tracking.",
+          "description": "Used in the case of auto event tracking.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "items": {
             "$ref": "Condition"
           },
@@ -3100,7 +3182,7 @@
         },
         "checkValidation": {
           "$ref": "Parameter",
-          "description": "Whether or not we should only fire tags if the form submit or link click event is not cancelled by some other event handler (e.g. because of validation). Only valid for Form Submission and Link Click triggers."
+          "description": "Whether or not we should only fire tags if the form submit or link click\nevent is not cancelled by some other event handler (e.g. because of\nvalidation). Only valid for Form Submission and Link Click triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "containerId": {
           "description": "GTM Container ID.",
@@ -3108,10 +3190,10 @@
         },
         "continuousTimeMinMilliseconds": {
           "$ref": "Parameter",
-          "description": "A visibility trigger minimum continuous visible time (in milliseconds). Only valid for AMP Visibility trigger."
+          "description": "A visibility trigger minimum continuous visible time (in milliseconds).\nOnly valid for AMP Visibility trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "customEventFilter": {
-          "description": "Used in the case of custom event, which is fired iff all Conditions are true.",
+          "description": "Used in the case of custom event, which is fired iff all Conditions are\ntrue.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "items": {
             "$ref": "Condition"
           },
@@ -3119,38 +3201,38 @@
         },
         "eventName": {
           "$ref": "Parameter",
-          "description": "Name of the GTM event that is fired. Only valid for Timer triggers."
+          "description": "Name of the GTM event that is fired. Only valid for Timer triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "filter": {
-          "description": "The trigger will only fire iff all Conditions are true.",
+          "description": "The trigger will only fire iff all Conditions are true.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "items": {
             "$ref": "Condition"
           },
           "type": "array"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Trigger as computed at storage time. This value is recomputed whenever the trigger is modified.",
+          "description": "The fingerprint of the GTM Trigger as computed at storage time.\nThis value is recomputed whenever the trigger is modified.",
           "type": "string"
         },
         "horizontalScrollPercentageList": {
           "$ref": "Parameter",
-          "description": "List of integer percentage values for scroll triggers. The trigger will fire when each percentage is reached when the view is scrolled horizontally. Only valid for AMP scroll triggers."
+          "description": "List of integer percentage values for scroll triggers. The trigger will\nfire when each percentage is reached when the view is scrolled\nhorizontally. Only valid for AMP scroll triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "interval": {
           "$ref": "Parameter",
-          "description": "Time between triggering recurring Timer Events (in milliseconds). Only valid for Timer triggers."
+          "description": "Time between triggering recurring Timer Events (in milliseconds). Only\nvalid for Timer triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "intervalSeconds": {
           "$ref": "Parameter",
-          "description": "Time between Timer Events to fire (in seconds). Only valid for AMP Timer trigger."
+          "description": "Time between Timer Events to fire (in seconds). Only valid for AMP Timer\ntrigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "limit": {
           "$ref": "Parameter",
-          "description": "Limit of the number of GTM events this Timer Trigger will fire. If no limit is set, we will continue to fire GTM events until the user leaves the page. Only valid for Timer triggers."
+          "description": "Limit of the number of GTM events this Timer Trigger will fire. If no limit\nis set, we will continue to fire GTM events until the user leaves the page.\nOnly valid for Timer triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "maxTimerLengthSeconds": {
           "$ref": "Parameter",
-          "description": "Max time to fire Timer Events (in seconds). Only valid for AMP Timer trigger."
+          "description": "Max time to fire Timer Events (in seconds). Only valid for AMP Timer\ntrigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "name": {
           "annotations": {
@@ -3159,11 +3241,11 @@
               "tagmanager.accounts.containers.triggers.update"
             ]
           },
-          "description": "Trigger display name.",
+          "description": "Trigger display name.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "type": "string"
         },
         "parameter": {
-          "description": "Additional parameters.",
+          "description": "Additional parameters.\n@mutable tagmanager.accounts.containers.workspaces.triggers.create\n@mutable tagmanager.accounts.containers.workspaces.triggers.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -3175,11 +3257,11 @@
         },
         "selector": {
           "$ref": "Parameter",
-          "description": "A click trigger CSS selector (i.e. \"a\", \"button\" etc.). Only valid for AMP Click trigger."
+          "description": "A click trigger CSS selector (i.e. \"a\", \"button\" etc.). Only valid for AMP\nClick trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "totalTimeMinMilliseconds": {
           "$ref": "Parameter",
-          "description": "A visibility trigger minimum total visible time (in milliseconds). Only valid for AMP Visibility trigger."
+          "description": "A visibility trigger minimum total visible time (in milliseconds).\nOnly valid for AMP Visibility trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "triggerId": {
           "description": "The Trigger ID uniquely identifies the GTM Trigger.",
@@ -3191,27 +3273,27 @@
               "tagmanager.accounts.containers.triggers.create"
             ]
           },
-          "description": "Defines the data layer event that causes this trigger.",
+          "description": "Defines the data layer event that causes this trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update",
           "enum": [
-            "always",
-            "ampClick",
-            "ampScroll",
-            "ampTimer",
-            "ampVisibility",
-            "click",
-            "customEvent",
-            "domReady",
-            "elementVisibility",
-            "formSubmission",
-            "historyChange",
-            "jsError",
-            "linkClick",
-            "pageview",
-            "scrollDepth",
-            "timer",
-            "triggerGroup",
-            "windowLoaded",
-            "youTubeVideo"
+            "PAGEVIEW",
+            "DOM_READY",
+            "WINDOW_LOADED",
+            "CUSTOM_EVENT",
+            "TRIGGER_GROUP",
+            "ALWAYS",
+            "FORM_SUBMISSION",
+            "CLICK",
+            "LINK_CLICK",
+            "JS_ERROR",
+            "HISTORY_CHANGE",
+            "TIMER",
+            "AMP_CLICK",
+            "AMP_TIMER",
+            "AMP_SCROLL",
+            "AMP_VISIBILITY",
+            "YOU_TUBE_VIDEO",
+            "SCROLL_DEPTH",
+            "ELEMENT_VISIBILITY"
           ],
           "enumDescriptions": [
             "",
@@ -3238,31 +3320,31 @@
         },
         "uniqueTriggerId": {
           "$ref": "Parameter",
-          "description": "Globally unique id of the trigger that auto-generates this (a Form Submit, Link Click or Timer listener) if any. Used to make incompatible auto-events work together with trigger filtering based on trigger ids. This value is populated during output generation since the tags implied by triggers don't exist until then. Only valid for Form Submit, Link Click and Timer triggers."
+          "description": "Globally unique id of the trigger that auto-generates this (a Form Submit,\nLink Click or Timer listener) if any. Used to make incompatible auto-events\nwork together with trigger filtering based on trigger ids. This value is\npopulated during output generation since the tags implied by triggers don't\nexist until then. Only valid for Form Submit, Link Click and Timer\ntriggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "verticalScrollPercentageList": {
           "$ref": "Parameter",
-          "description": "List of integer percentage values for scroll triggers. The trigger will fire when each percentage is reached when the view is scrolled vertically. Only valid for AMP scroll triggers."
+          "description": "List of integer percentage values for scroll triggers. The trigger will\nfire when each percentage is reached when the view is scrolled vertically.\nOnly valid for AMP scroll triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "visibilitySelector": {
           "$ref": "Parameter",
-          "description": "A visibility trigger CSS selector (i.e. \"#id\"). Only valid for AMP Visibility trigger."
+          "description": "A visibility trigger CSS selector (i.e. \"#id\"). Only valid for AMP\nVisibility trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "visiblePercentageMax": {
           "$ref": "Parameter",
-          "description": "A visibility trigger maximum percent visibility. Only valid for AMP Visibility trigger."
+          "description": "A visibility trigger maximum percent visibility. Only valid for AMP\nVisibility trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "visiblePercentageMin": {
           "$ref": "Parameter",
-          "description": "A visibility trigger minimum percent visibility. Only valid for AMP Visibility trigger."
+          "description": "A visibility trigger minimum percent visibility. Only valid for AMP\nVisibility trigger.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "waitForTags": {
           "$ref": "Parameter",
-          "description": "Whether or not we should delay the form submissions or link opening until all of the tags have fired (by preventing the default action and later simulating the default action). Only valid for Form Submission and Link Click triggers."
+          "description": "Whether or not we should delay the form submissions or link opening\nuntil all of the tags have fired (by preventing the default\naction and later simulating the default action). Only valid for\nForm Submission and Link Click triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         },
         "waitForTagsTimeout": {
           "$ref": "Parameter",
-          "description": "How long to wait (in milliseconds) for tags to fire when 'waits_for_tags' above evaluates to true. Only valid for Form Submission and Link Click triggers."
+          "description": "How long to wait (in milliseconds) for tags to fire when 'waits_for_tags'\nabove evaluates to \u003ccode\u003etrue\u003c/code\u003e.  Only valid for Form Submission and\nLink Click triggers.\n@mutable tagmanager.accounts.containers.triggers.create\n@mutable tagmanager.accounts.containers.triggers.update"
         }
       },
       "type": "object"
@@ -3278,14 +3360,14 @@
               "tagmanager.accounts.permissions.create"
             ]
           },
-          "description": "GTM Account access permissions."
+          "description": "GTM Account access permissions.\n@mutable tagmanager.accounts.permissions.create\n@mutable tagmanager.accounts.permissions.update"
         },
         "accountId": {
           "description": "GTM Account ID.",
           "type": "string"
         },
         "containerAccess": {
-          "description": "GTM Container access permissions.",
+          "description": "GTM Container access permissions.\n@mutable tagmanager.accounts.permissions.create\n@mutable tagmanager.accounts.permissions.update",
           "items": {
             "$ref": "ContainerAccess"
           },
@@ -3297,7 +3379,7 @@
               "tagmanager.accounts.permissions.create"
             ]
           },
-          "description": "User's email address.",
+          "description": "User's email address.\n@mutable tagmanager.accounts.permissions.create",
           "type": "string"
         },
         "permissionId": {
@@ -3320,21 +3402,21 @@
           "type": "string"
         },
         "disablingTriggerId": {
-          "description": "For mobile containers only: A list of trigger IDs for disabling conditional variables; the variable is enabled if one of the enabling trigger is true while all the disabling trigger are false. Treated as an unordered set.",
+          "description": "For mobile containers only: A list of trigger IDs for disabling conditional\nvariables; the variable is enabled if one of the enabling trigger is true\nwhile all the disabling trigger are false. Treated as an unordered set.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "enablingTriggerId": {
-          "description": "For mobile containers only: A list of trigger IDs for enabling conditional variables; the variable is enabled if one of the enabling triggers is true while all the disabling triggers are false. Treated as an unordered set.",
+          "description": "For mobile containers only: A list of trigger IDs for enabling conditional\nvariables; the variable is enabled if one of the enabling triggers is true\nwhile all the disabling triggers are false. Treated as an unordered set.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "fingerprint": {
-          "description": "The fingerprint of the GTM Variable as computed at storage time. This value is recomputed whenever the variable is modified.",
+          "description": "The fingerprint of the GTM Variable as computed at storage time.\nThis value is recomputed whenever the variable is modified.",
           "type": "string"
         },
         "name": {
@@ -3344,15 +3426,15 @@
               "tagmanager.accounts.containers.variables.update"
             ]
           },
-          "description": "Variable display name.",
+          "description": "Variable display name.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "type": "string"
         },
         "notes": {
-          "description": "User notes on how to apply this variable in the container.",
+          "description": "User notes on how to apply this variable in the container.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "type": "string"
         },
         "parameter": {
-          "description": "The variable's parameters.",
+          "description": "The variable's parameters.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "items": {
             "$ref": "Parameter"
           },
@@ -3363,12 +3445,12 @@
           "type": "string"
         },
         "scheduleEndMs": {
-          "description": "The end timestamp in milliseconds to schedule a variable.",
+          "description": "The end timestamp in milliseconds to schedule a variable.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "format": "int64",
           "type": "string"
         },
         "scheduleStartMs": {
-          "description": "The start timestamp in milliseconds to schedule a variable.",
+          "description": "The start timestamp in milliseconds to schedule a variable.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "format": "int64",
           "type": "string"
         },
@@ -3379,7 +3461,7 @@
               "tagmanager.accounts.containers.variables.update"
             ]
           },
-          "description": "GTM Variable Type.",
+          "description": "GTM Variable Type.\n@mutable tagmanager.accounts.containers.variables.create\n@mutable tagmanager.accounts.containers.variables.update",
           "type": "string"
         },
         "variableId": {
@@ -3390,7 +3472,7 @@
       "type": "object"
     }
   },
-  "servicePath": "tagmanager/v1/",
+  "servicePath": "",
   "title": "Tag Manager API",
   "version": "v1"
 }
\ No newline at end of file
diff --git a/tagmanager/v1/tagmanager-gen.go b/tagmanager/v1/tagmanager-gen.go
index 0473fff..e364b18 100644
--- a/tagmanager/v1/tagmanager-gen.go
+++ b/tagmanager/v1/tagmanager-gen.go
@@ -6,7 +6,7 @@
 
 // Package tagmanager provides access to the Tag Manager API.
 //
-// For product documentation, see: https://developers.google.com/tag-manager/api/v1/
+// For product documentation, see: https://developers.google.com/tag-manager
 //
 // Creating a client
 //
@@ -76,7 +76,7 @@
 const apiId = "tagmanager:v1"
 const apiName = "tagmanager"
 const apiVersion = "v1"
-const basePath = "https://www.googleapis.com/tagmanager/v1/"
+const basePath = "https://www.googleapis.com/"
 
 // OAuth2 scopes used by this API.
 const (
@@ -307,15 +307,19 @@
 	AccountId string `json:"accountId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Account as computed at
-	// storage time. This value is recomputed whenever the account is
-	// modified.
+	// storage time.
+	// This value is recomputed whenever the account is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Name: Account display name.
+	// @mutable tagmanager.accounts.create
+	// @mutable tagmanager.accounts.update
 	Name string `json:"name,omitempty"`
 
 	// ShareData: Whether the account shares data anonymously with Google
 	// and others.
+	// @mutable tagmanager.accounts.create
+	// @mutable tagmanager.accounts.update
 	ShareData bool `json:"shareData,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -348,16 +352,19 @@
 // AccountAccess: Defines the Google Tag Manager Account access
 // permissions.
 type AccountAccess struct {
-	// Permission: List of Account permissions. Valid account permissions
-	// are read and manage.
+	// Permission: List of Account permissions.
+	// Valid account permissions are <code>read</code> and
+	// <code>manage</code>.
+	// @mutable tagmanager.accounts.permissions.create
+	// @mutable tagmanager.accounts.permissions.update
 	//
 	// Possible values:
-	//   "delete"
-	//   "edit"
-	//   "editWorkspace"
-	//   "manage"
-	//   "publish"
-	//   "read"
+	//   "READ"
+	//   "EDIT"
+	//   "PUBLISH"
+	//   "DELETE"
+	//   "MANAGE"
+	//   "EDIT_WORKSPACE"
 	Permission []string `json:"permission,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Permission") to
@@ -386,32 +393,46 @@
 // Condition: Represents a predicate.
 type Condition struct {
 	// Parameter: A list of named parameters (key/value), depending on the
-	// condition's type. Notes:
-	// - For binary operators, include parameters named arg0 and arg1 for
-	// specifying the left and right operands, respectively.
-	// - At this time, the left operand (arg0) must be a reference to a
-	// variable.
-	// - For case-insensitive Regex matching, include a boolean parameter
-	// named ignore_case that is set to true. If not specified or set to any
-	// other value, the matching will be case sensitive.
-	// - To negate an operator, include a boolean parameter named negate
-	// boolean parameter that is set to true.
+	// condition's type.
+	// Notes:<ul>
+	// <li>For binary operators, include parameters named <code>arg0</code>
+	// and
+	//    <code>arg1</code> for specifying the left and right operands,
+	//    respectively.</li>
+	// <li>At this time, the left operand (<code>arg0</code>) must be a
+	// reference
+	//     to a variable.</li>
+	// <li>For case-insensitive Regex matching, include a boolean parameter
+	// named
+	//     <code>ignore_case</code> that is set to <code>true</code>.
+	//     If not specified or set to any other value, the matching will be
+	// case
+	//     sensitive.</li>
+	// <li>To negate an operator, include a boolean parameter named
+	//     <code>negate</code> boolean parameter that is set to
+	// <code>true</code>.
+	//     </li>
+	// </ul>
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Parameter []*Parameter `json:"parameter,omitempty"`
 
 	// Type: The type of operator for this condition.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	//
 	// Possible values:
-	//   "contains"
-	//   "cssSelector"
-	//   "endsWith"
-	//   "equals"
-	//   "greater"
-	//   "greaterOrEquals"
-	//   "less"
-	//   "lessOrEquals"
-	//   "matchRegex"
-	//   "startsWith"
-	//   "urlMatches"
+	//   "EQUALS"
+	//   "CONTAINS"
+	//   "STARTS_WITH"
+	//   "ENDS_WITH"
+	//   "MATCH_REGEX"
+	//   "GREATER"
+	//   "GREATER_OR_EQUALS"
+	//   "LESS"
+	//   "LESS_OR_EQUALS"
+	//   "CSS_SELECTOR"
+	//   "URL_MATCHES"
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Parameter") to
@@ -447,153 +468,174 @@
 
 	// DomainName: Optional list of domain names associated with the
 	// Container.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	DomainName []string `json:"domainName,omitempty"`
 
 	// EnabledBuiltInVariable: List of enabled built-in variables. Valid
-	// values include: pageUrl, pageHostname, pagePath, referrer, event,
-	// clickElement, clickClasses, clickId, clickTarget, clickUrl,
-	// clickText, formElement, formClasses, formId, formTarget, formUrl,
-	// formText, errorMessage, errorUrl, errorLine, newHistoryFragment,
-	// oldHistoryFragment, newHistoryState, oldHistoryState, historySource,
-	// containerVersion, debugMode, randomNumber, containerId.
+	// values include: <code>pageUrl,
+	// pageHostname, pagePath, referrer, event, clickElement,
+	// clickClasses,
+	// clickId, clickTarget, clickUrl, clickText, formElement,
+	// formClasses,
+	// formId, formTarget, formUrl, formText, errorMessage, errorUrl,
+	// errorLine,
+	// newHistoryFragment, oldHistoryFragment, newHistoryState,
+	// oldHistoryState,
+	// historySource, containerVersion, debugMode,
+	// randomNumber,
+	// containerId</code>.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	//
 	// Possible values:
-	//   "advertiserId"
-	//   "advertisingTrackingEnabled"
-	//   "ampBrowserLanguage"
-	//   "ampCanonicalHost"
-	//   "ampCanonicalPath"
-	//   "ampCanonicalUrl"
-	//   "ampClientId"
-	//   "ampClientMaxScrollX"
-	//   "ampClientMaxScrollY"
-	//   "ampClientScreenHeight"
-	//   "ampClientScreenWidth"
-	//   "ampClientScrollX"
-	//   "ampClientScrollY"
-	//   "ampClientTimestamp"
-	//   "ampClientTimezone"
-	//   "ampGtmEvent"
-	//   "ampPageDownloadTime"
-	//   "ampPageLoadTime"
-	//   "ampPageViewId"
-	//   "ampReferrer"
-	//   "ampTitle"
-	//   "ampTotalEngagedTime"
-	//   "appId"
-	//   "appName"
-	//   "appVersionCode"
-	//   "appVersionName"
-	//   "clickClasses"
-	//   "clickElement"
-	//   "clickId"
-	//   "clickTarget"
-	//   "clickText"
-	//   "clickUrl"
-	//   "containerId"
-	//   "containerVersion"
-	//   "debugMode"
-	//   "deviceName"
-	//   "elementVisibilityFirstTime"
-	//   "elementVisibilityRatio"
-	//   "elementVisibilityRecentTime"
-	//   "elementVisibilityTime"
-	//   "environmentName"
-	//   "errorLine"
-	//   "errorMessage"
-	//   "errorUrl"
-	//   "event"
-	//   "eventName"
-	//   "firebaseEventParameterCampaign"
-	//   "firebaseEventParameterCampaignAclid"
-	//   "firebaseEventParameterCampaignAnid"
-	//   "firebaseEventParameterCampaignClickTimestamp"
-	//   "firebaseEventParameterCampaignContent"
-	//   "firebaseEventParameterCampaignCp1"
-	//   "firebaseEventParameterCampaignGclid"
-	//   "firebaseEventParameterCampaignSource"
-	//   "firebaseEventParameterCampaignTerm"
-	//   "firebaseEventParameterCurrency"
-	//   "firebaseEventParameterDynamicLinkAcceptTime"
-	//   "firebaseEventParameterDynamicLinkLinkid"
-	//   "firebaseEventParameterNotificationMessageDeviceTime"
-	//   "firebaseEventParameterNotificationMessageId"
-	//   "firebaseEventParameterNotificationMessageName"
-	//   "firebaseEventParameterNotificationMessageTime"
-	//   "firebaseEventParameterNotificationTopic"
-	//   "firebaseEventParameterPreviousAppVersion"
-	//   "firebaseEventParameterPreviousOsVersion"
-	//   "firebaseEventParameterPrice"
-	//   "firebaseEventParameterProductId"
-	//   "firebaseEventParameterQuantity"
-	//   "firebaseEventParameterValue"
-	//   "formClasses"
-	//   "formElement"
-	//   "formId"
-	//   "formTarget"
-	//   "formText"
-	//   "formUrl"
-	//   "historySource"
-	//   "htmlId"
-	//   "language"
-	//   "newHistoryFragment"
-	//   "newHistoryState"
-	//   "newHistoryUrl"
-	//   "oldHistoryFragment"
-	//   "oldHistoryState"
-	//   "oldHistoryUrl"
-	//   "osVersion"
-	//   "pageHostname"
-	//   "pagePath"
-	//   "pageUrl"
-	//   "platform"
-	//   "randomNumber"
-	//   "referrer"
-	//   "resolution"
-	//   "scrollDepthDirection"
-	//   "scrollDepthThreshold"
-	//   "scrollDepthUnits"
-	//   "sdkVersion"
-	//   "videoCurrentTime"
-	//   "videoDuration"
-	//   "videoPercent"
-	//   "videoProvider"
-	//   "videoStatus"
-	//   "videoTitle"
-	//   "videoUrl"
-	//   "videoVisible"
+	//   "PAGE_URL"
+	//   "PAGE_HOSTNAME"
+	//   "PAGE_PATH"
+	//   "REFERRER"
+	//   "EVENT" - For web or mobile.
+	//   "CLICK_ELEMENT"
+	//   "CLICK_CLASSES"
+	//   "CLICK_ID"
+	//   "CLICK_TARGET"
+	//   "CLICK_URL"
+	//   "CLICK_TEXT"
+	//   "FORM_ELEMENT"
+	//   "FORM_CLASSES"
+	//   "FORM_ID"
+	//   "FORM_TARGET"
+	//   "FORM_URL"
+	//   "FORM_TEXT"
+	//   "ENVIRONMENT_NAME"
+	//   "ERROR_MESSAGE"
+	//   "ERROR_URL"
+	//   "ERROR_LINE"
+	//   "NEW_HISTORY_URL"
+	//   "OLD_HISTORY_URL"
+	//   "NEW_HISTORY_FRAGMENT"
+	//   "OLD_HISTORY_FRAGMENT"
+	//   "NEW_HISTORY_STATE"
+	//   "OLD_HISTORY_STATE"
+	//   "HISTORY_SOURCE"
+	//   "CONTAINER_VERSION" - For web or mobile.
+	//   "DEBUG_MODE"
+	//   "RANDOM_NUMBER" - For web or mobile.
+	//   "CONTAINER_ID" - For web or mobile.
+	//   "APP_ID"
+	//   "APP_NAME"
+	//   "APP_VERSION_CODE"
+	//   "APP_VERSION_NAME"
+	//   "LANGUAGE"
+	//   "OS_VERSION"
+	//   "PLATFORM"
+	//   "SDK_VERSION"
+	//   "DEVICE_NAME"
+	//   "RESOLUTION"
+	//   "ADVERTISER_ID"
+	//   "ADVERTISING_TRACKING_ENABLED"
+	//   "HTML_ID"
+	//   "AMP_BROWSER_LANGUAGE"
+	//   "AMP_CANONICAL_PATH"
+	//   "AMP_CANONICAL_URL"
+	//   "AMP_CANONICAL_HOST"
+	//   "AMP_REFERRER"
+	//   "AMP_TITLE"
+	//   "AMP_CLIENT_ID"
+	//   "AMP_CLIENT_TIMEZONE"
+	//   "AMP_CLIENT_TIMESTAMP"
+	//   "AMP_CLIENT_SCREEN_WIDTH"
+	//   "AMP_CLIENT_SCREEN_HEIGHT"
+	//   "AMP_CLIENT_SCROLL_X"
+	//   "AMP_CLIENT_SCROLL_Y"
+	//   "AMP_CLIENT_MAX_SCROLL_X"
+	//   "AMP_CLIENT_MAX_SCROLL_Y"
+	//   "AMP_TOTAL_ENGAGED_TIME"
+	//   "AMP_PAGE_VIEW_ID"
+	//   "AMP_PAGE_LOAD_TIME"
+	//   "AMP_PAGE_DOWNLOAD_TIME"
+	//   "AMP_GTM_EVENT"
+	//   "EVENT_NAME"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_ACLID"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_ANID"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CLICK_TIMESTAMP"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CONTENT"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_CP1"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_GCLID"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_SOURCE"
+	//   "FIREBASE_EVENT_PARAMETER_CAMPAIGN_TERM"
+	//   "FIREBASE_EVENT_PARAMETER_CURRENCY"
+	//   "FIREBASE_EVENT_PARAMETER_DYNAMIC_LINK_ACCEPT_TIME"
+	//   "FIREBASE_EVENT_PARAMETER_DYNAMIC_LINK_LINKID"
+	//   "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_DEVICE_TIME"
+	//   "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_ID"
+	//   "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_NAME"
+	//   "FIREBASE_EVENT_PARAMETER_NOTIFICATION_MESSAGE_TIME"
+	//   "FIREBASE_EVENT_PARAMETER_NOTIFICATION_TOPIC"
+	//   "FIREBASE_EVENT_PARAMETER_PREVIOUS_APP_VERSION"
+	//   "FIREBASE_EVENT_PARAMETER_PREVIOUS_OS_VERSION"
+	//   "FIREBASE_EVENT_PARAMETER_PRICE"
+	//   "FIREBASE_EVENT_PARAMETER_PRODUCT_ID"
+	//   "FIREBASE_EVENT_PARAMETER_QUANTITY"
+	//   "FIREBASE_EVENT_PARAMETER_VALUE"
+	//   "VIDEO_PROVIDER"
+	//   "VIDEO_URL"
+	//   "VIDEO_TITLE"
+	//   "VIDEO_DURATION"
+	//   "VIDEO_PERCENT"
+	//   "VIDEO_VISIBLE"
+	//   "VIDEO_STATUS"
+	//   "VIDEO_CURRENT_TIME"
+	//   "SCROLL_DEPTH_THRESHOLD"
+	//   "SCROLL_DEPTH_UNITS"
+	//   "SCROLL_DEPTH_DIRECTION"
+	//   "ELEMENT_VISIBILITY_RATIO"
+	//   "ELEMENT_VISIBILITY_TIME"
+	//   "ELEMENT_VISIBILITY_FIRST_TIME"
+	//   "ELEMENT_VISIBILITY_RECENT_TIME"
 	EnabledBuiltInVariable []string `json:"enabledBuiltInVariable,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Container as computed at
-	// storage time. This value is recomputed whenever the account is
-	// modified.
+	// storage time.  This
+	// value is recomputed whenever the account is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Name: Container display name.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	Name string `json:"name,omitempty"`
 
 	// Notes: Container Notes.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	Notes string `json:"notes,omitempty"`
 
 	// PublicId: Container Public ID.
 	PublicId string `json:"publicId,omitempty"`
 
 	// TimeZoneCountryId: Container Country ID.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	TimeZoneCountryId string `json:"timeZoneCountryId,omitempty"`
 
 	// TimeZoneId: Container Time Zone ID.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	TimeZoneId string `json:"timeZoneId,omitempty"`
 
 	// UsageContext: List of Usage Contexts for the Container. Valid values
-	// include: web, android, ios.
+	// include: <code>web,
+	// android, ios</code>.
+	// @mutable tagmanager.accounts.containers.create
+	// @mutable tagmanager.accounts.containers.update
 	//
 	// Possible values:
-	//   "amp"
-	//   "android"
-	//   "androidSdk5"
-	//   "ios"
-	//   "iosSdk5"
-	//   "web"
+	//   "WEB"
+	//   "ANDROID"
+	//   "IOS"
+	//   "ANDROID_SDK_5"
+	//   "IOS_SDK_5"
+	//   "AMP"
 	UsageContext []string `json:"usageContext,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -627,18 +669,23 @@
 // permissions.
 type ContainerAccess struct {
 	// ContainerId: GTM Container ID.
+	// @mutable tagmanager.accounts.permissions.create
+	// @mutable tagmanager.accounts.permissions.update
 	ContainerId string `json:"containerId,omitempty"`
 
-	// Permission: List of Container permissions. Valid container
-	// permissions are: read, edit, delete, publish.
+	// Permission: List of Container permissions.
+	// Valid container permissions are: <code>read, edit, delete,
+	// publish</code>.
+	// @mutable tagmanager.accounts.permissions.create
+	// @mutable tagmanager.accounts.permissions.update
 	//
 	// Possible values:
-	//   "delete"
-	//   "edit"
-	//   "editWorkspace"
-	//   "manage"
-	//   "publish"
-	//   "read"
+	//   "READ"
+	//   "EDIT"
+	//   "PUBLISH"
+	//   "DELETE"
+	//   "MANAGE"
+	//   "EDIT_WORKSPACE"
 	Permission []string `json:"permission,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "ContainerId") to
@@ -684,8 +731,10 @@
 	Deleted bool `json:"deleted,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Container Version as computed
-	// at storage time. This value is recomputed whenever the container
-	// version is modified.
+	// at
+	// storage time. This value is recomputed whenever the container version
+	// is
+	// modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Folder: The folders in the container that this version was taken
@@ -696,10 +745,13 @@
 	Macro []*Macro `json:"macro,omitempty"`
 
 	// Name: Container version display name.
+	// @mutable tagmanager.accounts.containers.versions.update
 	Name string `json:"name,omitempty"`
 
-	// Notes: User notes on how to apply this container version in the
+	// Notes: User notes on how to apply this container version in
+	// the
 	// container.
+	// @mutable tagmanager.accounts.containers.versions.update
 	Notes string `json:"notes,omitempty"`
 
 	// Rule: The rules in the container that this version was taken from.
@@ -811,7 +863,8 @@
 	Notes string `json:"notes,omitempty"`
 
 	// QuickPreview: The creation of this version may be for quick preview
-	// and shouldn't be saved.
+	// and
+	// shouldn't be saved.
 	QuickPreview bool `json:"quickPreview,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Name") to
@@ -873,9 +926,10 @@
 }
 
 // Environment: Represents a Google Tag Manager Environment. Note that a
-// user can create, delete and update environments of type USER, but can
-// only update the enable_debug and url fields of environments of other
-// types.
+// user can create,
+// delete and update environments of type USER, but can only update
+// the
+// enable_debug and url fields of environments of other types.
 type Environment struct {
 	// AccountId: GTM Account ID.
 	AccountId string `json:"accountId,omitempty"`
@@ -893,11 +947,16 @@
 	ContainerVersionId string `json:"containerVersionId,omitempty"`
 
 	// Description: The environment description. Can be set or changed only
-	// on USER type environments.
+	// on USER type
+	// environments.
+	// @mutable tagmanager.accounts.containers.environments.create
+	// @mutable tagmanager.accounts.containers.environments.update
 	Description string `json:"description,omitempty"`
 
 	// EnableDebug: Whether or not to enable debug by default on for the
 	// environment.
+	// @mutable tagmanager.accounts.containers.environments.create
+	// @mutable tagmanager.accounts.containers.environments.update
 	EnableDebug bool `json:"enableDebug,omitempty"`
 
 	// EnvironmentId: GTM Environment ID uniquely identifies the GTM
@@ -905,24 +964,35 @@
 	EnvironmentId string `json:"environmentId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM environment as computed at
-	// storage time. This value is recomputed whenever the environment is
-	// modified.
+	// storage time.
+	// This value is recomputed whenever the environment is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Name: The environment display name. Can be set or changed only on
-	// USER type environments.
+	// USER type
+	// environments.
+	// @mutable tagmanager.accounts.containers.environments.create
+	// @mutable tagmanager.accounts.containers.environments.update
 	Name string `json:"name,omitempty"`
 
 	// Type: The type of this environment.
 	//
 	// Possible values:
-	//   "draft"
-	//   "latest"
-	//   "live"
-	//   "user"
+	//   "USER" - Used for user defined environments.
+	//   "LIVE" - Used for Live environment, which points to the live
+	// published container
+	// version.
+	//   "LATEST" - Used for Latest environment, which points to the latest
+	// created container
+	// version.
+	//   "DRAFT" - Used for Draft environment, which points to the single
+	// draft in
+	// the container.
 	Type string `json:"type,omitempty"`
 
 	// Url: Default preview page url for the environment.
+	// @mutable tagmanager.accounts.containers.environments.create
+	// @mutable tagmanager.accounts.containers.environments.update
 	Url string `json:"url,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -961,13 +1031,16 @@
 	ContainerId string `json:"containerId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Folder as computed at storage
-	// time. This value is recomputed whenever the folder is modified.
+	// time.
+	// This value is recomputed whenever the folder is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// FolderId: The Folder ID uniquely identifies the GTM Folder.
 	FolderId string `json:"folderId,omitempty"`
 
 	// Name: Folder display name.
+	// @mutable tagmanager.accounts.containers.folders.create
+	// @mutable tagmanager.accounts.containers.folders.update
 	Name string `json:"name,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1337,44 +1410,65 @@
 	ContainerId string `json:"containerId,omitempty"`
 
 	// DisablingRuleId: For mobile containers only: A list of rule IDs for
-	// disabling conditional macros; the macro is enabled if one of the
-	// enabling rules is true while all the disabling rules are false.
-	// Treated as an unordered set.
+	// disabling conditional
+	// macros; the macro is enabled if one of the enabling rules is true
+	// while all
+	// the disabling rules are false. Treated as an unordered set.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	DisablingRuleId []string `json:"disablingRuleId,omitempty"`
 
 	// EnablingRuleId: For mobile containers only: A list of rule IDs for
-	// enabling conditional macros; the macro is enabled if one of the
-	// enabling rules is true while all the disabling rules are false.
-	// Treated as an unordered set.
+	// enabling conditional
+	// macros; the macro is enabled if one of the enabling rules is true
+	// while all
+	// the disabling rules are false. Treated as an unordered set.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	EnablingRuleId []string `json:"enablingRuleId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Macro as computed at storage
-	// time. This value is recomputed whenever the macro is modified.
+	// time.
+	// This value is recomputed whenever the macro is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// MacroId: The Macro ID uniquely identifies the GTM Macro.
 	MacroId string `json:"macroId,omitempty"`
 
 	// Name: Macro display name.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	Name string `json:"name,omitempty"`
 
-	// Notes: User notes on how to apply this macro in the container.
+	// Notes: User notes on how to apply this macro in the
+	// container.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	Notes string `json:"notes,omitempty"`
 
 	// Parameter: The macro's parameters.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	Parameter []*Parameter `json:"parameter,omitempty"`
 
 	// ParentFolderId: Parent folder id.
 	ParentFolderId string `json:"parentFolderId,omitempty"`
 
-	// ScheduleEndMs: The end timestamp in milliseconds to schedule a macro.
+	// ScheduleEndMs: The end timestamp in milliseconds to schedule a
+	// macro.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	ScheduleEndMs int64 `json:"scheduleEndMs,omitempty,string"`
 
 	// ScheduleStartMs: The start timestamp in milliseconds to schedule a
 	// macro.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	ScheduleStartMs int64 `json:"scheduleStartMs,omitempty,string"`
 
 	// Type: GTM Macro Type.
+	// @mutable tagmanager.accounts.containers.macros.create
+	// @mutable tagmanager.accounts.containers.macros.update
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AccountId") to
@@ -1402,41 +1496,83 @@
 
 // Parameter: Represents a Google Tag Manager Parameter.
 type Parameter struct {
-	// Key: The named key that uniquely identifies a parameter. Required for
-	// top-level parameters, as well as map values. Ignored for list values.
+	// Key: The named key that uniquely identifies a parameter.  Required
+	// for top-level
+	// parameters, as well as map values.  Ignored for list values.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Key string `json:"key,omitempty"`
 
-	// List: This list parameter's parameters (keys will be ignored).
+	// List: This list parameter's parameters (keys will be
+	// ignored).
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	List []*Parameter `json:"list,omitempty"`
 
 	// Map: This map parameter's parameters (must have keys; keys must be
 	// unique).
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Map []*Parameter `json:"map,omitempty"`
 
-	// Type: The parameter type. Valid values are:
-	// - boolean: The value represents a boolean, represented as 'true' or
-	// 'false'
-	// - integer: The value represents a 64-bit signed integer value, in
-	// base 10
-	// - list: A list of parameters should be specified
-	// - map: A map of parameters should be specified
-	// - template: The value represents any text; this can include variable
-	// references (even variable references that might return non-string
-	// types)
-	// - trigger_reference: The value represents a trigger, represented as
-	// the trigger id
+	// Type: The parameter type.  Valid values
+	// are:<ul>
+	// <li><code>boolean</code>: The value represents a boolean, represented
+	// as
+	//     'true' or 'false'</li>
+	// <li><code>integer</code>: The value represents a 64-bit signed
+	// integer
+	//     value, in base 10</li>
+	// <li><code>list</code>: A list of parameters should be
+	// specified</li>
+	// <li><code>map</code>: A map of parameters should be
+	// specified</li>
+	// <li><code>template</code>: The value represents any text; this can
+	// include
+	//     variable references (even variable references that might return
+	//     non-string types)</li>
+	// <li><code>trigger_reference</code>: The value represents a trigger,
+	//     represented as the trigger id</li>
+	// </ul>
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	//
 	// Possible values:
-	//   "boolean"
-	//   "integer"
-	//   "list"
-	//   "map"
-	//   "template"
-	//   "triggerReference"
+	//   "TEMPLATE" - May include variable references (such as
+	// "{{myVariable}}").
+	//   "INTEGER"
+	//   "BOOLEAN"
+	//   "LIST"
+	//   "MAP"
+	//   "TRIGGER_REFERENCE"
 	Type string `json:"type,omitempty"`
 
-	// Value: A parameter's value (may contain variable references such as
-	// "{{myVariable}}") as appropriate to the specified type.
+	// Value: A parameter's value (may contain variable references such
+	// as
+	// "{{myVariable}}")
+	// as appropriate to the specified type.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Value string `json:"value,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Key") to
@@ -1504,19 +1640,27 @@
 
 	// Condition: The list of conditions that make up this rule (implicit
 	// AND between them).
+	// @mutable tagmanager.accounts.containers.rules.create
+	// @mutable tagmanager.accounts.containers.rules.update
 	Condition []*Condition `json:"condition,omitempty"`
 
 	// ContainerId: GTM Container ID.
 	ContainerId string `json:"containerId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Rule as computed at storage
-	// time. This value is recomputed whenever the rule is modified.
+	// time.
+	// This value is recomputed whenever the rule is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Name: Rule display name.
+	// @mutable tagmanager.accounts.containers.rules.create
+	// @mutable tagmanager.accounts.containers.rules.update
 	Name string `json:"name,omitempty"`
 
-	// Notes: User notes on how to apply this rule in the container.
+	// Notes: User notes on how to apply this rule in the
+	// container.
+	// @mutable tagmanager.accounts.containers.rules.create
+	// @mutable tagmanager.accounts.containers.rules.update
 	Notes string `json:"notes,omitempty"`
 
 	// RuleId: The Rule ID uniquely identifies the GTM Rule.
@@ -1547,8 +1691,9 @@
 
 type SetupTag struct {
 	// StopOnSetupFailure: If true, fire the main tag if and only if the
-	// setup tag fires successfully. If false, fire the main tag regardless
-	// of setup tag firing status.
+	// setup tag fires
+	// successfully.
+	// If false, fire the main tag regardless of setup tag firing status.
 	StopOnSetupFailure bool `json:"stopOnSetupFailure,omitempty"`
 
 	// TagName: The name of the setup tag.
@@ -1584,60 +1729,95 @@
 	AccountId string `json:"accountId,omitempty"`
 
 	// BlockingRuleId: Blocking rule IDs. If any of the listed rules
-	// evaluate to true, the tag will not fire.
+	// evaluate to true, the tag
+	//     will not fire.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	BlockingRuleId []string `json:"blockingRuleId,omitempty"`
 
 	// BlockingTriggerId: Blocking trigger IDs. If any of the listed
-	// triggers evaluate to true, the tag will not fire.
+	// triggers evaluate to true, the
+	// tag
+	//     will not fire.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	BlockingTriggerId []string `json:"blockingTriggerId,omitempty"`
 
 	// ContainerId: GTM Container ID.
 	ContainerId string `json:"containerId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Tag as computed at storage
-	// time. This value is recomputed whenever the tag is modified.
+	// time.
+	// This value is recomputed whenever the tag is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// FiringRuleId: Firing rule IDs. A tag will fire when any of the listed
-	// rules are true and all of its blockingRuleIds (if any specified) are
+	// rules are true and
+	//     all of its <code>blockingRuleIds</code> (if any specified) are
 	// false.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	FiringRuleId []string `json:"firingRuleId,omitempty"`
 
 	// FiringTriggerId: Firing trigger IDs. A tag will fire when any of the
-	// listed triggers are true and all of its blockingTriggerIds (if any
-	// specified) are false.
+	// listed triggers are
+	// true and all of its <code>blockingTriggerIds</code> (if any
+	// specified) are
+	// false.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	FiringTriggerId []string `json:"firingTriggerId,omitempty"`
 
 	// LiveOnly: If set to true, this tag will only fire in the live
-	// environment (e.g. not in preview or debug mode).
+	// environment (e.g. not
+	// in preview or debug mode).
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	LiveOnly bool `json:"liveOnly,omitempty"`
 
 	// Name: Tag display name.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Name string `json:"name,omitempty"`
 
 	// Notes: User notes on how to apply this tag in the container.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Notes string `json:"notes,omitempty"`
 
 	// Parameter: The tag's parameters.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Parameter []*Parameter `json:"parameter,omitempty"`
 
 	// ParentFolderId: Parent folder id.
 	ParentFolderId string `json:"parentFolderId,omitempty"`
 
 	// Paused: True if the tag is paused.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Paused bool `json:"paused,omitempty"`
 
 	// Priority: User defined numeric priority of the tag. Tags are fired
-	// asynchronously in order of priority. Tags with higher numeric value
-	// fire first. A tag's priority can be a positive or negative value. The
-	// default value is 0.
+	// asynchronously in
+	// order of priority. Tags with higher numeric value fire first. A
+	// tag's
+	// priority can be a positive or negative value. The default value is
+	// 0.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Priority *Parameter `json:"priority,omitempty"`
 
-	// ScheduleEndMs: The end timestamp in milliseconds to schedule a tag.
+	// ScheduleEndMs: The end timestamp in milliseconds to schedule a
+	// tag.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	ScheduleEndMs int64 `json:"scheduleEndMs,omitempty,string"`
 
 	// ScheduleStartMs: The start timestamp in milliseconds to schedule a
 	// tag.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	ScheduleStartMs int64 `json:"scheduleStartMs,omitempty,string"`
 
 	// SetupTag: The list of setup tags. Currently we only allow one.
@@ -1646,9 +1826,12 @@
 	// TagFiringOption: Option to fire this tag.
 	//
 	// Possible values:
-	//   "oncePerEvent"
-	//   "oncePerLoad"
-	//   "unlimited"
+	//   "UNLIMITED" - Tag can be fired multiple times per event.
+	//   "ONCE_PER_EVENT" - Tag can only be fired per event but can be fired
+	// multiple times per load
+	// (e.g., app load or page load).
+	//   "ONCE_PER_LOAD" - Tag can only be fired per load (e.g., app load or
+	// page load).
 	TagFiringOption string `json:"tagFiringOption,omitempty"`
 
 	// TagId: The Tag ID uniquely identifies the GTM Tag.
@@ -1658,6 +1841,8 @@
 	TeardownTag []*TeardownTag `json:"teardownTag,omitempty"`
 
 	// Type: GTM Tag Type.
+	// @mutable tagmanager.accounts.containers.tags.create
+	// @mutable tagmanager.accounts.containers.tags.update
 	Type string `json:"type,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1689,8 +1874,9 @@
 
 type TeardownTag struct {
 	// StopTeardownOnFailure: If true, fire the teardown tag if and only if
-	// the main tag fires successfully. If false, fire the teardown tag
-	// regardless of main tag firing status.
+	// the main tag fires
+	// successfully.
+	// If false, fire the teardown tag regardless of main tag firing status.
 	StopTeardownOnFailure bool `json:"stopTeardownOnFailure,omitempty"`
 
 	// TagName: The name of the teardown tag.
@@ -1727,140 +1913,211 @@
 	AccountId string `json:"accountId,omitempty"`
 
 	// AutoEventFilter: Used in the case of auto event tracking.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	AutoEventFilter []*Condition `json:"autoEventFilter,omitempty"`
 
 	// CheckValidation: Whether or not we should only fire tags if the form
-	// submit or link click event is not cancelled by some other event
-	// handler (e.g. because of validation). Only valid for Form Submission
-	// and Link Click triggers.
+	// submit or link click
+	// event is not cancelled by some other event handler (e.g. because
+	// of
+	// validation). Only valid for Form Submission and Link Click
+	// triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	CheckValidation *Parameter `json:"checkValidation,omitempty"`
 
 	// ContainerId: GTM Container ID.
 	ContainerId string `json:"containerId,omitempty"`
 
 	// ContinuousTimeMinMilliseconds: A visibility trigger minimum
-	// continuous visible time (in milliseconds). Only valid for AMP
-	// Visibility trigger.
+	// continuous visible time (in milliseconds).
+	// Only valid for AMP Visibility trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	ContinuousTimeMinMilliseconds *Parameter `json:"continuousTimeMinMilliseconds,omitempty"`
 
 	// CustomEventFilter: Used in the case of custom event, which is fired
-	// iff all Conditions are true.
+	// iff all Conditions are
+	// true.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	CustomEventFilter []*Condition `json:"customEventFilter,omitempty"`
 
 	// EventName: Name of the GTM event that is fired. Only valid for Timer
 	// triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	EventName *Parameter `json:"eventName,omitempty"`
 
-	// Filter: The trigger will only fire iff all Conditions are true.
+	// Filter: The trigger will only fire iff all Conditions are
+	// true.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Filter []*Condition `json:"filter,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Trigger as computed at
-	// storage time. This value is recomputed whenever the trigger is
-	// modified.
+	// storage time.
+	// This value is recomputed whenever the trigger is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// HorizontalScrollPercentageList: List of integer percentage values for
-	// scroll triggers. The trigger will fire when each percentage is
-	// reached when the view is scrolled horizontally. Only valid for AMP
-	// scroll triggers.
+	// scroll triggers. The trigger will
+	// fire when each percentage is reached when the view is
+	// scrolled
+	// horizontally. Only valid for AMP scroll triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	HorizontalScrollPercentageList *Parameter `json:"horizontalScrollPercentageList,omitempty"`
 
 	// Interval: Time between triggering recurring Timer Events (in
-	// milliseconds). Only valid for Timer triggers.
+	// milliseconds). Only
+	// valid for Timer triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Interval *Parameter `json:"interval,omitempty"`
 
 	// IntervalSeconds: Time between Timer Events to fire (in seconds). Only
-	// valid for AMP Timer trigger.
+	// valid for AMP Timer
+	// trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	IntervalSeconds *Parameter `json:"intervalSeconds,omitempty"`
 
 	// Limit: Limit of the number of GTM events this Timer Trigger will
-	// fire. If no limit is set, we will continue to fire GTM events until
-	// the user leaves the page. Only valid for Timer triggers.
+	// fire. If no limit
+	// is set, we will continue to fire GTM events until the user leaves the
+	// page.
+	// Only valid for Timer triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Limit *Parameter `json:"limit,omitempty"`
 
 	// MaxTimerLengthSeconds: Max time to fire Timer Events (in seconds).
-	// Only valid for AMP Timer trigger.
+	// Only valid for AMP Timer
+	// trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	MaxTimerLengthSeconds *Parameter `json:"maxTimerLengthSeconds,omitempty"`
 
 	// Name: Trigger display name.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Name string `json:"name,omitempty"`
 
 	// Parameter: Additional parameters.
+	// @mutable
+	// tagmanager.accounts.containers.workspaces.triggers.create
+	// @mutable tagmanager.accounts.containers.workspaces.triggers.update
 	Parameter []*Parameter `json:"parameter,omitempty"`
 
 	// ParentFolderId: Parent folder id.
 	ParentFolderId string `json:"parentFolderId,omitempty"`
 
 	// Selector: A click trigger CSS selector (i.e. "a", "button" etc.).
-	// Only valid for AMP Click trigger.
+	// Only valid for AMP
+	// Click trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	Selector *Parameter `json:"selector,omitempty"`
 
 	// TotalTimeMinMilliseconds: A visibility trigger minimum total visible
-	// time (in milliseconds). Only valid for AMP Visibility trigger.
+	// time (in milliseconds).
+	// Only valid for AMP Visibility trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	TotalTimeMinMilliseconds *Parameter `json:"totalTimeMinMilliseconds,omitempty"`
 
 	// TriggerId: The Trigger ID uniquely identifies the GTM Trigger.
 	TriggerId string `json:"triggerId,omitempty"`
 
 	// Type: Defines the data layer event that causes this trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	//
 	// Possible values:
-	//   "always"
-	//   "ampClick"
-	//   "ampScroll"
-	//   "ampTimer"
-	//   "ampVisibility"
-	//   "click"
-	//   "customEvent"
-	//   "domReady"
-	//   "elementVisibility"
-	//   "formSubmission"
-	//   "historyChange"
-	//   "jsError"
-	//   "linkClick"
-	//   "pageview"
-	//   "scrollDepth"
-	//   "timer"
-	//   "triggerGroup"
-	//   "windowLoaded"
-	//   "youTubeVideo"
+	//   "PAGEVIEW"
+	//   "DOM_READY"
+	//   "WINDOW_LOADED"
+	//   "CUSTOM_EVENT"
+	//   "TRIGGER_GROUP"
+	//   "ALWAYS"
+	//   "FORM_SUBMISSION"
+	//   "CLICK"
+	//   "LINK_CLICK"
+	//   "JS_ERROR"
+	//   "HISTORY_CHANGE"
+	//   "TIMER"
+	//   "AMP_CLICK"
+	//   "AMP_TIMER"
+	//   "AMP_SCROLL"
+	//   "AMP_VISIBILITY"
+	//   "YOU_TUBE_VIDEO"
+	//   "SCROLL_DEPTH"
+	//   "ELEMENT_VISIBILITY"
 	Type string `json:"type,omitempty"`
 
 	// UniqueTriggerId: Globally unique id of the trigger that
-	// auto-generates this (a Form Submit, Link Click or Timer listener) if
-	// any. Used to make incompatible auto-events work together with trigger
-	// filtering based on trigger ids. This value is populated during output
-	// generation since the tags implied by triggers don't exist until then.
-	// Only valid for Form Submit, Link Click and Timer triggers.
+	// auto-generates this (a Form Submit,
+	// Link Click or Timer listener) if any. Used to make incompatible
+	// auto-events
+	// work together with trigger filtering based on trigger ids. This value
+	// is
+	// populated during output generation since the tags implied by triggers
+	// don't
+	// exist until then. Only valid for Form Submit, Link Click and
+	// Timer
+	// triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	UniqueTriggerId *Parameter `json:"uniqueTriggerId,omitempty"`
 
 	// VerticalScrollPercentageList: List of integer percentage values for
-	// scroll triggers. The trigger will fire when each percentage is
-	// reached when the view is scrolled vertically. Only valid for AMP
-	// scroll triggers.
+	// scroll triggers. The trigger will
+	// fire when each percentage is reached when the view is scrolled
+	// vertically.
+	// Only valid for AMP scroll triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	VerticalScrollPercentageList *Parameter `json:"verticalScrollPercentageList,omitempty"`
 
 	// VisibilitySelector: A visibility trigger CSS selector (i.e. "#id").
-	// Only valid for AMP Visibility trigger.
+	// Only valid for AMP
+	// Visibility trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	VisibilitySelector *Parameter `json:"visibilitySelector,omitempty"`
 
 	// VisiblePercentageMax: A visibility trigger maximum percent
-	// visibility. Only valid for AMP Visibility trigger.
+	// visibility. Only valid for AMP
+	// Visibility trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	VisiblePercentageMax *Parameter `json:"visiblePercentageMax,omitempty"`
 
 	// VisiblePercentageMin: A visibility trigger minimum percent
-	// visibility. Only valid for AMP Visibility trigger.
+	// visibility. Only valid for AMP
+	// Visibility trigger.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	VisiblePercentageMin *Parameter `json:"visiblePercentageMin,omitempty"`
 
 	// WaitForTags: Whether or not we should delay the form submissions or
-	// link opening until all of the tags have fired (by preventing the
-	// default action and later simulating the default action). Only valid
-	// for Form Submission and Link Click triggers.
+	// link opening
+	// until all of the tags have fired (by preventing the default
+	// action and later simulating the default action). Only valid for
+	// Form Submission and Link Click triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	WaitForTags *Parameter `json:"waitForTags,omitempty"`
 
 	// WaitForTagsTimeout: How long to wait (in milliseconds) for tags to
-	// fire when 'waits_for_tags' above evaluates to true. Only valid for
-	// Form Submission and Link Click triggers.
+	// fire when 'waits_for_tags'
+	// above evaluates to <code>true</code>.  Only valid for Form Submission
+	// and
+	// Link Click triggers.
+	// @mutable tagmanager.accounts.containers.triggers.create
+	// @mutable tagmanager.accounts.containers.triggers.update
 	WaitForTagsTimeout *Parameter `json:"waitForTagsTimeout,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1894,15 +2151,20 @@
 // container.
 type UserAccess struct {
 	// AccountAccess: GTM Account access permissions.
+	// @mutable tagmanager.accounts.permissions.create
+	// @mutable tagmanager.accounts.permissions.update
 	AccountAccess *AccountAccess `json:"accountAccess,omitempty"`
 
 	// AccountId: GTM Account ID.
 	AccountId string `json:"accountId,omitempty"`
 
 	// ContainerAccess: GTM Container access permissions.
+	// @mutable tagmanager.accounts.permissions.create
+	// @mutable tagmanager.accounts.permissions.update
 	ContainerAccess []*ContainerAccess `json:"containerAccess,omitempty"`
 
 	// EmailAddress: User's email address.
+	// @mutable tagmanager.accounts.permissions.create
 	EmailAddress string `json:"emailAddress,omitempty"`
 
 	// PermissionId: Account Permission ID.
@@ -1944,29 +2206,44 @@
 	ContainerId string `json:"containerId,omitempty"`
 
 	// DisablingTriggerId: For mobile containers only: A list of trigger IDs
-	// for disabling conditional variables; the variable is enabled if one
-	// of the enabling trigger is true while all the disabling trigger are
-	// false. Treated as an unordered set.
+	// for disabling conditional
+	// variables; the variable is enabled if one of the enabling trigger is
+	// true
+	// while all the disabling trigger are false. Treated as an unordered
+	// set.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	DisablingTriggerId []string `json:"disablingTriggerId,omitempty"`
 
 	// EnablingTriggerId: For mobile containers only: A list of trigger IDs
-	// for enabling conditional variables; the variable is enabled if one of
-	// the enabling triggers is true while all the disabling triggers are
-	// false. Treated as an unordered set.
+	// for enabling conditional
+	// variables; the variable is enabled if one of the enabling triggers is
+	// true
+	// while all the disabling triggers are false. Treated as an unordered
+	// set.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	EnablingTriggerId []string `json:"enablingTriggerId,omitempty"`
 
 	// Fingerprint: The fingerprint of the GTM Variable as computed at
-	// storage time. This value is recomputed whenever the variable is
-	// modified.
+	// storage time.
+	// This value is recomputed whenever the variable is modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// Name: Variable display name.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	Name string `json:"name,omitempty"`
 
-	// Notes: User notes on how to apply this variable in the container.
+	// Notes: User notes on how to apply this variable in the
+	// container.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	Notes string `json:"notes,omitempty"`
 
 	// Parameter: The variable's parameters.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	Parameter []*Parameter `json:"parameter,omitempty"`
 
 	// ParentFolderId: Parent folder id.
@@ -1974,13 +2251,19 @@
 
 	// ScheduleEndMs: The end timestamp in milliseconds to schedule a
 	// variable.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	ScheduleEndMs int64 `json:"scheduleEndMs,omitempty,string"`
 
 	// ScheduleStartMs: The start timestamp in milliseconds to schedule a
 	// variable.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	ScheduleStartMs int64 `json:"scheduleStartMs,omitempty,string"`
 
 	// Type: GTM Variable Type.
+	// @mutable tagmanager.accounts.containers.variables.create
+	// @mutable tagmanager.accounts.containers.variables.update
 	Type string `json:"type,omitempty"`
 
 	// VariableId: The Variable ID uniquely identifies the GTM Variable.
@@ -2078,7 +2361,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -2130,6 +2413,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Account.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.get",
 	//   "parameterOrder": [
@@ -2143,7 +2427,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}",
 	//   "response": {
 	//     "$ref": "Account"
 	//   },
@@ -2219,7 +2503,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -2268,9 +2552,12 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Accounts that a user has access to.",
+	//   "flatPath": "tagmanager/v1/accounts",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.list",
-	//   "path": "accounts",
+	//   "parameterOrder": [],
+	//   "parameters": {},
+	//   "path": "tagmanager/v1/accounts",
 	//   "response": {
 	//     "$ref": "ListAccountsResponse"
 	//   },
@@ -2303,8 +2590,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the account in
-// storage.
+// this fingerprint must match the fingerprint of the account
+// in storage.
 func (c *AccountsUpdateCall) Fingerprint(fingerprint string) *AccountsUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -2349,7 +2636,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -2401,6 +2688,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Account.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.update",
 	//   "parameterOrder": [
@@ -2414,12 +2702,12 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the account in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the account\nin storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}",
 	//   "request": {
 	//     "$ref": "Account"
 	//   },
@@ -2491,7 +2779,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -2543,6 +2831,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.create",
 	//   "parameterOrder": [
@@ -2556,7 +2845,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers",
 	//   "request": {
 	//     "$ref": "Container"
 	//   },
@@ -2623,7 +2912,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -2651,6 +2940,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.delete",
 	//   "parameterOrder": [
@@ -2671,7 +2961,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.delete.containers"
 	//   ]
@@ -2746,7 +3036,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -2799,6 +3089,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.get",
 	//   "parameterOrder": [
@@ -2819,7 +3110,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "response": {
 	//     "$ref": "Container"
 	//   },
@@ -2896,7 +3187,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -2948,6 +3239,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all Containers that belongs to a GTM Account.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.list",
 	//   "parameterOrder": [
@@ -2961,7 +3253,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers",
 	//   "response": {
 	//     "$ref": "ListContainersResponse"
 	//   },
@@ -2995,8 +3287,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the container in
-// storage.
+// this fingerprint must match the fingerprint of the
+// container in storage.
 func (c *AccountsContainersUpdateCall) Fingerprint(fingerprint string) *AccountsContainersUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -3041,7 +3333,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -3094,6 +3386,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.update",
 	//   "parameterOrder": [
@@ -3114,12 +3407,12 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the container in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer in storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}",
 	//   "request": {
 	//     "$ref": "Container"
 	//   },
@@ -3193,7 +3486,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -3246,6 +3539,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a GTM Environment.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.environments.create",
 	//   "parameterOrder": [
@@ -3266,7 +3560,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
 	//   "request": {
 	//     "$ref": "Environment"
 	//   },
@@ -3335,7 +3629,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -3364,6 +3658,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a GTM Environment.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.environments.delete",
 	//   "parameterOrder": [
@@ -3391,7 +3686,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
 	//   ]
@@ -3468,7 +3763,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -3522,6 +3817,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Environment.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.environments.get",
 	//   "parameterOrder": [
@@ -3549,7 +3845,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "response": {
 	//     "$ref": "Environment"
 	//   },
@@ -3628,7 +3924,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -3681,6 +3977,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Environments of a GTM Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.environments.list",
 	//   "parameterOrder": [
@@ -3701,7 +3998,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments",
 	//   "response": {
 	//     "$ref": "ListEnvironmentsResponse"
 	//   },
@@ -3737,8 +4034,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the environment in
-// storage.
+// this fingerprint must match the fingerprint of the
+// environment in storage.
 func (c *AccountsContainersEnvironmentsUpdateCall) Fingerprint(fingerprint string) *AccountsContainersEnvironmentsUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -3783,7 +4080,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -3837,6 +4134,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Environment.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.environments.update",
 	//   "parameterOrder": [
@@ -3864,12 +4162,12 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the\nenvironment in storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
 	//   "request": {
 	//     "$ref": "Environment"
 	//   },
@@ -3943,7 +4241,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -3996,6 +4294,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.folders.create",
 	//   "parameterOrder": [
@@ -4016,7 +4315,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
 	//   "request": {
 	//     "$ref": "Folder"
 	//   },
@@ -4085,7 +4384,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders/{folderId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -4114,6 +4413,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.folders.delete",
 	//   "parameterOrder": [
@@ -4141,7 +4441,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
 	//   ]
@@ -4218,7 +4518,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders/{folderId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -4272,6 +4572,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.folders.get",
 	//   "parameterOrder": [
@@ -4299,7 +4600,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "response": {
 	//     "$ref": "Folder"
 	//   },
@@ -4378,7 +4679,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -4431,6 +4732,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Folders of a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.folders.list",
 	//   "parameterOrder": [
@@ -4451,7 +4753,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders",
 	//   "response": {
 	//     "$ref": "ListFoldersResponse"
 	//   },
@@ -4487,7 +4789,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the folder in storage.
+// this fingerprint must match the fingerprint of the folder in
+// storage.
 func (c *AccountsContainersFoldersUpdateCall) Fingerprint(fingerprint string) *AccountsContainersFoldersUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -4532,7 +4835,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders/{folderId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -4586,6 +4889,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.folders.update",
 	//   "parameterOrder": [
@@ -4607,7 +4911,7 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the folder in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the folder in\nstorage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -4618,7 +4922,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}",
 	//   "request": {
 	//     "$ref": "Folder"
 	//   },
@@ -4701,7 +5005,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -4755,6 +5059,7 @@
 	return ret, nil
 	// {
 	//   "description": "List all entities in a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.folders.entities.list",
 	//   "parameterOrder": [
@@ -4782,7 +5087,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/folders/{folderId}/entities",
 	//   "response": {
 	//     "$ref": "FolderEntities"
 	//   },
@@ -4877,7 +5182,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/move_folders/{folderId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/move_folders/{folderId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -4906,6 +5211,7 @@
 	return nil
 	// {
 	//   "description": "Moves entities to a GTM Folder.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.move_folders.update",
 	//   "parameterOrder": [
@@ -4951,7 +5257,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/move_folders/{folderId}",
 	//   "request": {
 	//     "$ref": "Folder"
 	//   },
@@ -5024,7 +5330,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -5078,6 +5384,7 @@
 	return ret, nil
 	// {
 	//   "description": "Re-generates the authorization code for a GTM Environment.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.reauthorize_environments.update",
 	//   "parameterOrder": [
@@ -5105,7 +5412,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/reauthorize_environments/{environmentId}",
 	//   "request": {
 	//     "$ref": "Environment"
 	//   },
@@ -5179,7 +5486,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/tags")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -5232,6 +5539,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a GTM Tag.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.tags.create",
 	//   "parameterOrder": [
@@ -5252,7 +5560,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/tags",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
 	//   "request": {
 	//     "$ref": "Tag"
 	//   },
@@ -5321,7 +5629,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/tags/{tagId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -5350,6 +5658,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a GTM Tag.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.tags.delete",
 	//   "parameterOrder": [
@@ -5377,7 +5686,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
 	//   ]
@@ -5454,7 +5763,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/tags/{tagId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -5508,6 +5817,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Tag.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.tags.get",
 	//   "parameterOrder": [
@@ -5535,7 +5845,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "response": {
 	//     "$ref": "Tag"
 	//   },
@@ -5614,7 +5924,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/tags")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -5667,6 +5977,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Tags of a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.tags.list",
 	//   "parameterOrder": [
@@ -5687,7 +5998,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/tags",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags",
 	//   "response": {
 	//     "$ref": "ListTagsResponse"
 	//   },
@@ -5723,7 +6034,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the tag in storage.
+// this fingerprint must match the fingerprint of the tag in
+// storage.
 func (c *AccountsContainersTagsUpdateCall) Fingerprint(fingerprint string) *AccountsContainersTagsUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -5768,7 +6080,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/tags/{tagId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -5822,6 +6134,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Tag.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.tags.update",
 	//   "parameterOrder": [
@@ -5843,7 +6156,7 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the tag in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the tag in\nstorage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -5854,7 +6167,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/tags/{tagId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/tags/{tagId}",
 	//   "request": {
 	//     "$ref": "Tag"
 	//   },
@@ -5928,7 +6241,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/triggers")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -5981,6 +6294,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a GTM Trigger.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.triggers.create",
 	//   "parameterOrder": [
@@ -6001,7 +6315,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/triggers",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
 	//   "request": {
 	//     "$ref": "Trigger"
 	//   },
@@ -6070,7 +6384,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -6099,6 +6413,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a GTM Trigger.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.triggers.delete",
 	//   "parameterOrder": [
@@ -6126,7 +6441,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
 	//   ]
@@ -6203,7 +6518,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -6257,6 +6572,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Trigger.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.triggers.get",
 	//   "parameterOrder": [
@@ -6284,7 +6600,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "response": {
 	//     "$ref": "Trigger"
 	//   },
@@ -6363,7 +6679,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/triggers")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -6416,6 +6732,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Triggers of a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.triggers.list",
 	//   "parameterOrder": [
@@ -6436,7 +6753,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/triggers",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers",
 	//   "response": {
 	//     "$ref": "ListTriggersResponse"
 	//   },
@@ -6472,8 +6789,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the trigger in
-// storage.
+// this fingerprint must match the fingerprint of the trigger
+// in storage.
 func (c *AccountsContainersTriggersUpdateCall) Fingerprint(fingerprint string) *AccountsContainersTriggersUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -6518,7 +6835,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -6572,6 +6889,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Trigger.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.triggers.update",
 	//   "parameterOrder": [
@@ -6593,7 +6911,7 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the trigger in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the trigger\nin storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -6604,7 +6922,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/triggers/{triggerId}",
 	//   "request": {
 	//     "$ref": "Trigger"
 	//   },
@@ -6678,7 +6996,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/variables")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -6731,6 +7049,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a GTM Variable.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.variables.create",
 	//   "parameterOrder": [
@@ -6751,7 +7070,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/variables",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
 	//   "request": {
 	//     "$ref": "Variable"
 	//   },
@@ -6820,7 +7139,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/variables/{variableId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -6849,6 +7168,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a GTM Variable.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.variables.delete",
 	//   "parameterOrder": [
@@ -6876,7 +7196,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
 	//   ]
@@ -6953,7 +7273,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/variables/{variableId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -7007,6 +7327,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a GTM Variable.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.variables.get",
 	//   "parameterOrder": [
@@ -7034,7 +7355,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "response": {
 	//     "$ref": "Variable"
 	//   },
@@ -7113,7 +7434,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/variables")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -7166,6 +7487,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all GTM Variables of a Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.variables.list",
 	//   "parameterOrder": [
@@ -7186,7 +7508,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/variables",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables",
 	//   "response": {
 	//     "$ref": "ListVariablesResponse"
 	//   },
@@ -7222,8 +7544,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the variable in
-// storage.
+// this fingerprint must match the fingerprint of the variable
+// in storage.
 func (c *AccountsContainersVariablesUpdateCall) Fingerprint(fingerprint string) *AccountsContainersVariablesUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -7268,7 +7590,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/variables/{variableId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -7322,6 +7644,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a GTM Variable.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.variables.update",
 	//   "parameterOrder": [
@@ -7343,7 +7666,7 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the variable in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the variable\nin storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -7354,7 +7677,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/variables/{variableId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/variables/{variableId}",
 	//   "request": {
 	//     "$ref": "Variable"
 	//   },
@@ -7428,7 +7751,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -7481,6 +7804,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.versions.create",
 	//   "parameterOrder": [
@@ -7501,7 +7825,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
 	//   "request": {
 	//     "$ref": "CreateContainerVersionRequestVersionOptions"
 	//   },
@@ -7570,7 +7894,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -7599,6 +7923,7 @@
 	return nil
 	// {
 	//   "description": "Deletes a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.containers.versions.delete",
 	//   "parameterOrder": [
@@ -7626,7 +7951,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.edit.containerversions"
 	//   ]
@@ -7703,7 +8028,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -7757,6 +8082,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.versions.get",
 	//   "parameterOrder": [
@@ -7778,13 +8104,13 @@
 	//       "type": "string"
 	//     },
 	//     "containerVersionId": {
-	//       "description": "The GTM Container Version ID. Specify published to retrieve the currently published version.",
+	//       "description": "The GTM Container Version ID. Specify \u003ccode\u003epublished\u003c/code\u003e to retrieve\nthe currently published version.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "response": {
 	//     "$ref": "ContainerVersion"
 	//   },
@@ -7878,7 +8204,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -7931,6 +8257,7 @@
 	return ret, nil
 	// {
 	//   "description": "Lists all Container Versions of a GTM Container.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.containers.versions.list",
 	//   "parameterOrder": [
@@ -7963,7 +8290,7 @@
 	//       "type": "boolean"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions",
 	//   "response": {
 	//     "$ref": "ListContainerVersionsResponse"
 	//   },
@@ -7998,8 +8325,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the container version
-// in storage.
+// this fingerprint must match the fingerprint of the
+// container version in storage.
 func (c *AccountsContainersVersionsPublishCall) Fingerprint(fingerprint string) *AccountsContainersVersionsPublishCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -8039,7 +8366,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -8093,6 +8420,7 @@
 	return ret, nil
 	// {
 	//   "description": "Publishes a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.versions.publish",
 	//   "parameterOrder": [
@@ -8120,12 +8448,12 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the container version in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer version in storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/publish",
 	//   "response": {
 	//     "$ref": "PublishContainerVersionResponse"
 	//   },
@@ -8149,9 +8477,12 @@
 }
 
 // Restore: Restores a Container Version. This will overwrite the
-// container's current configuration (including its variables, triggers
-// and tags). The operation will not have any effect on the version that
-// is being served (i.e. the published version).
+// container's current
+// configuration (including its variables, triggers and tags). The
+// operation
+// will not have any effect on the version that is being served (i.e.
+// the
+// published version).
 func (r *AccountsContainersVersionsService) Restore(accountId string, containerId string, containerVersionId string) *AccountsContainersVersionsRestoreCall {
 	c := &AccountsContainersVersionsRestoreCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.accountId = accountId
@@ -8194,7 +8525,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -8247,7 +8578,8 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Restores a Container Version. This will overwrite the container's current configuration (including its variables, triggers and tags). The operation will not have any effect on the version that is being served (i.e. the published version).",
+	//   "description": "Restores a Container Version. This will overwrite the container's current\nconfiguration (including its variables, triggers and tags). The operation\nwill not have any effect on the version that is being served (i.e. the\npublished version).",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.versions.restore",
 	//   "parameterOrder": [
@@ -8275,7 +8607,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/restore",
 	//   "response": {
 	//     "$ref": "ContainerVersion"
 	//   },
@@ -8341,7 +8673,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -8395,6 +8727,7 @@
 	return ret, nil
 	// {
 	//   "description": "Undeletes a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.containers.versions.undelete",
 	//   "parameterOrder": [
@@ -8422,7 +8755,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}/undelete",
 	//   "response": {
 	//     "$ref": "ContainerVersion"
 	//   },
@@ -8457,8 +8790,8 @@
 }
 
 // Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the container version
-// in storage.
+// this fingerprint must match the fingerprint of the
+// container version in storage.
 func (c *AccountsContainersVersionsUpdateCall) Fingerprint(fingerprint string) *AccountsContainersVersionsUpdateCall {
 	c.urlParams_.Set("fingerprint", fingerprint)
 	return c
@@ -8503,7 +8836,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -8557,6 +8890,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a Container Version.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.containers.versions.update",
 	//   "parameterOrder": [
@@ -8584,12 +8918,12 @@
 	//       "type": "string"
 	//     },
 	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the container version in storage.",
+	//       "description": "When provided, this fingerprint must match the fingerprint of the\ncontainer version in storage.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/containers/{containerId}/versions/{containerVersionId}",
 	//   "request": {
 	//     "$ref": "ContainerVersion"
 	//   },
@@ -8661,7 +8995,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/permissions")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/permissions")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("POST", urls, body)
 	if err != nil {
@@ -8713,6 +9047,7 @@
 	return ret, nil
 	// {
 	//   "description": "Creates a user's Account \u0026 Container Permissions.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/permissions",
 	//   "httpMethod": "POST",
 	//   "id": "tagmanager.accounts.permissions.create",
 	//   "parameterOrder": [
@@ -8726,7 +9061,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/permissions",
+	//   "path": "tagmanager/v1/accounts/{accountId}/permissions",
 	//   "request": {
 	//     "$ref": "UserAccess"
 	//   },
@@ -8752,7 +9087,8 @@
 }
 
 // Delete: Removes a user from the account, revoking access to it and
-// all of its containers.
+// all of its
+// containers.
 func (r *AccountsPermissionsService) Delete(accountId string, permissionId string) *AccountsPermissionsDeleteCall {
 	c := &AccountsPermissionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.accountId = accountId
@@ -8794,7 +9130,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/permissions/{permissionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("DELETE", urls, body)
 	if err != nil {
@@ -8821,7 +9157,8 @@
 	}
 	return nil
 	// {
-	//   "description": "Removes a user from the account, revoking access to it and all of its containers.",
+	//   "description": "Removes a user from the account, revoking access to it and all of its\ncontainers.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "tagmanager.accounts.permissions.delete",
 	//   "parameterOrder": [
@@ -8842,7 +9179,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/permissions/{permissionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "scopes": [
 	//     "https://www.googleapis.com/auth/tagmanager.manage.users"
 	//   ]
@@ -8917,7 +9254,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/permissions/{permissionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -8970,6 +9307,7 @@
 	return ret, nil
 	// {
 	//   "description": "Gets a user's Account \u0026 Container Permissions.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.permissions.get",
 	//   "parameterOrder": [
@@ -8990,7 +9328,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/permissions/{permissionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "response": {
 	//     "$ref": "UserAccess"
 	//   },
@@ -9013,7 +9351,8 @@
 }
 
 // List: List all users that have access to the account along with
-// Account and Container Permissions granted to each of them.
+// Account and
+// Container Permissions granted to each of them.
 func (r *AccountsPermissionsService) List(accountId string) *AccountsPermissionsListCall {
 	c := &AccountsPermissionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.accountId = accountId
@@ -9067,7 +9406,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/permissions")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/permissions")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -9118,7 +9457,8 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "List all users that have access to the account along with Account and Container Permissions granted to each of them.",
+	//   "description": "List all users that have access to the account along with Account and\nContainer Permissions granted to each of them.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/permissions",
 	//   "httpMethod": "GET",
 	//   "id": "tagmanager.accounts.permissions.list",
 	//   "parameterOrder": [
@@ -9126,13 +9466,13 @@
 	//   ],
 	//   "parameters": {
 	//     "accountId": {
-	//       "description": "The GTM Account ID. @required tagmanager.accounts.permissions.list",
+	//       "description": "The GTM Account ID.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/permissions",
+	//   "path": "tagmanager/v1/accounts/{accountId}/permissions",
 	//   "response": {
 	//     "$ref": "ListAccountUsersResponse"
 	//   },
@@ -9203,7 +9543,7 @@
 	reqHeaders.Set("Content-Type", "application/json")
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/permissions/{permissionId}")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("PUT", urls, body)
 	if err != nil {
@@ -9256,6 +9596,7 @@
 	return ret, nil
 	// {
 	//   "description": "Updates a user's Account \u0026 Container Permissions.",
+	//   "flatPath": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "httpMethod": "PUT",
 	//   "id": "tagmanager.accounts.permissions.update",
 	//   "parameterOrder": [
@@ -9276,7 +9617,7 @@
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "accounts/{accountId}/permissions/{permissionId}",
+	//   "path": "tagmanager/v1/accounts/{accountId}/permissions/{permissionId}",
 	//   "request": {
 	//     "$ref": "UserAccess"
 	//   },
diff --git a/texttospeech/v1/texttospeech-api.json b/texttospeech/v1/texttospeech-api.json
index cf97cec..3de839e 100644
--- a/texttospeech/v1/texttospeech-api.json
+++ b/texttospeech/v1/texttospeech-api.json
@@ -152,7 +152,7 @@
       }
     }
   },
-  "revision": "20190329",
+  "revision": "20190614",
   "rootUrl": "https://texttospeech.googleapis.com/",
   "schemas": {
     "AudioConfig": {
@@ -160,7 +160,7 @@
       "id": "AudioConfig",
       "properties": {
         "audioEncoding": {
-          "description": "Required. The format of the requested audio byte stream.",
+          "description": "Required. The format of the audio byte stream.",
           "enum": [
             "AUDIO_ENCODING_UNSPECIFIED",
             "LINEAR16",
@@ -176,29 +176,29 @@
           "type": "string"
         },
         "effectsProfileId": {
-          "description": "An identifier which selects 'audio effects' profiles that are applied on\n(post synthesized) text to speech.\nEffects are applied on top of each other in the order they are given.\nSee\n\n[audio-profiles](https:\n//cloud.google.com/text-to-speech/docs/audio-profiles)\nfor current supported profile ids.",
+          "description": "Input only. Optional. An identifier which selects 'audio effects' profiles\nthat are applied on (post synthesized) text to speech. Effects are applied\non top of each other in the order they are given. See\n\n[audio-profiles](https:\n//cloud.google.com/text-to-speech/docs/audio-profiles)\nfor current supported profile ids.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "pitch": {
-          "description": "Optional speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20\nsemitones from the original pitch. -20 means decrease 20 semitones from the\noriginal pitch.",
+          "description": "Input only. Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means\nincrease 20 semitones from the original pitch. -20 means decrease 20\nsemitones from the original pitch.",
           "format": "double",
           "type": "number"
         },
         "sampleRateHertz": {
-          "description": "The synthesis sample rate (in hertz) for this audio. Optional.  If this is\ndifferent from the voice's natural sample rate, then the synthesizer will\nhonor this request by converting to the desired sample rate (which might\nresult in worse audio quality), unless the specified sample rate is not\nsupported for the encoding chosen, in which case it will fail the request\nand return google.rpc.Code.INVALID_ARGUMENT.",
+          "description": "The synthesis sample rate (in hertz) for this audio. Optional. When this is\nspecified in SynthesizeSpeechRequest, if this is different from the voice's\nnatural sample rate, then the synthesizer will honor this request by\nconverting to the desired sample rate (which might result in worse audio\nquality), unless the specified sample rate is not supported for the\nencoding chosen, in which case it will fail the request and return\ngoogle.rpc.Code.INVALID_ARGUMENT.",
           "format": "int32",
           "type": "integer"
         },
         "speakingRate": {
-          "description": "Optional speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal\nnative speed supported by the specific voice. 2.0 is twice as fast, and\n0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any\nother values \u003c 0.25 or \u003e 4.0 will return an error.",
+          "description": "Input only. Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is\nthe normal native speed supported by the specific voice. 2.0 is twice as\nfast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0\nspeed. Any other values \u003c 0.25 or \u003e 4.0 will return an error.",
           "format": "double",
           "type": "number"
         },
         "volumeGainDb": {
-          "description": "Optional volume gain (in dB) of the normal native volume supported by the\nspecific voice, in the range [-96.0, 16.0]. If unset, or set to a value of\n0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)\nwill play at approximately half the amplitude of the normal native signal\namplitude. A value of +6.0 (dB) will play at approximately twice the\namplitude of the normal native signal amplitude. Strongly recommend not to\nexceed +10 (dB) as there's usually no effective increase in loudness for\nany value greater than that.",
+          "description": "Input only. Optional. Volume gain (in dB) of the normal native volume\nsupported by the specific voice, in the range [-96.0, 16.0]. If unset, or\nset to a value of 0.0 (dB), will play at normal native signal amplitude. A\nvalue of -6.0 (dB) will play at approximately half the amplitude of the\nnormal native signal amplitude. A value of +6.0 (dB) will play at\napproximately twice the amplitude of the normal native signal amplitude.\nStrongly recommend not to exceed +10 (dB) as there's usually no effective\nincrease in loudness for any value greater than that.",
           "format": "double",
           "type": "number"
         }
@@ -258,7 +258,7 @@
       "id": "SynthesizeSpeechResponse",
       "properties": {
         "audioContent": {
-          "description": "The audio data bytes encoded as specified in the request, including the\nheader (For LINEAR16 audio, we include the WAV header). Note: as\nwith all bytes fields, protobuffers use a pure binary representation,\nwhereas JSON representations use base64.",
+          "description": "The audio data bytes encoded as specified in the request, including the\nheader for encodings that are wrapped in containers (e.g. MP3, OGG_OPUS).\nFor LINEAR16 audio, we include the WAV header. Note: as\nwith all bytes fields, protobuffers use a pure binary representation,\nwhereas JSON representations use base64.",
           "format": "byte",
           "type": "string"
         }
diff --git a/texttospeech/v1/texttospeech-gen.go b/texttospeech/v1/texttospeech-gen.go
index b30f543..d108289 100644
--- a/texttospeech/v1/texttospeech-gen.go
+++ b/texttospeech/v1/texttospeech-gen.go
@@ -155,8 +155,7 @@
 
 // AudioConfig: Description of audio data to be synthesized.
 type AudioConfig struct {
-	// AudioEncoding: Required. The format of the requested audio byte
-	// stream.
+	// AudioEncoding: Required. The format of the audio byte stream.
 	//
 	// Possible values:
 	//   "AUDIO_ENCODING_UNSPECIFIED" - Not specified. Will return result
@@ -174,63 +173,65 @@
 	// than MP3 while using approximately the same bitrate.
 	AudioEncoding string `json:"audioEncoding,omitempty"`
 
-	// EffectsProfileId: An identifier which selects 'audio effects'
-	// profiles that are applied on
-	// (post synthesized) text to speech.
-	// Effects are applied on top of each other in the order they are
-	// given.
+	// EffectsProfileId: Input only. Optional. An identifier which selects
+	// 'audio effects' profiles
+	// that are applied on (post synthesized) text to speech. Effects are
+	// applied
+	// on top of each other in the order they are given.
 	// See
 	//
 	// [audio-profiles](https:
-	// //cloud.google.com/text-to-speech/
-	// docs/audio-profiles)
+	// //cloud.google.com/text-to-speech/docs/au
+	// dio-profiles)
 	// for current supported profile ids.
 	EffectsProfileId []string `json:"effectsProfileId,omitempty"`
 
-	// Pitch: Optional speaking pitch, in the range [-20.0, 20.0]. 20 means
-	// increase 20
-	// semitones from the original pitch. -20 means decrease 20 semitones
-	// from the
-	// original pitch.
+	// Pitch: Input only. Optional. Speaking pitch, in the range [-20.0,
+	// 20.0]. 20 means
+	// increase 20 semitones from the original pitch. -20 means decrease
+	// 20
+	// semitones from the original pitch.
 	Pitch float64 `json:"pitch,omitempty"`
 
 	// SampleRateHertz: The synthesis sample rate (in hertz) for this audio.
-	// Optional.  If this is
-	// different from the voice's natural sample rate, then the synthesizer
-	// will
-	// honor this request by converting to the desired sample rate (which
-	// might
-	// result in worse audio quality), unless the specified sample rate is
-	// not
-	// supported for the encoding chosen, in which case it will fail the
-	// request
-	// and return google.rpc.Code.INVALID_ARGUMENT.
+	// Optional. When this is
+	// specified in SynthesizeSpeechRequest, if this is different from the
+	// voice's
+	// natural sample rate, then the synthesizer will honor this request
+	// by
+	// converting to the desired sample rate (which might result in worse
+	// audio
+	// quality), unless the specified sample rate is not supported for
+	// the
+	// encoding chosen, in which case it will fail the request and
+	// return
+	// google.rpc.Code.INVALID_ARGUMENT.
 	SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
 
-	// SpeakingRate: Optional speaking rate/speed, in the range [0.25, 4.0].
-	// 1.0 is the normal
-	// native speed supported by the specific voice. 2.0 is twice as fast,
-	// and
-	// 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed.
-	// Any
-	// other values < 0.25 or > 4.0 will return an error.
+	// SpeakingRate: Input only. Optional. Speaking rate/speed, in the range
+	// [0.25, 4.0]. 1.0 is
+	// the normal native speed supported by the specific voice. 2.0 is twice
+	// as
+	// fast, and 0.5 is half as fast. If unset(0.0), defaults to the native
+	// 1.0
+	// speed. Any other values < 0.25 or > 4.0 will return an error.
 	SpeakingRate float64 `json:"speakingRate,omitempty"`
 
-	// VolumeGainDb: Optional volume gain (in dB) of the normal native
-	// volume supported by the
-	// specific voice, in the range [-96.0, 16.0]. If unset, or set to a
-	// value of
-	// 0.0 (dB), will play at normal native signal amplitude. A value of
-	// -6.0 (dB)
-	// will play at approximately half the amplitude of the normal native
-	// signal
-	// amplitude. A value of +6.0 (dB) will play at approximately twice
+	// VolumeGainDb: Input only. Optional. Volume gain (in dB) of the normal
+	// native volume
+	// supported by the specific voice, in the range [-96.0, 16.0]. If
+	// unset, or
+	// set to a value of 0.0 (dB), will play at normal native signal
+	// amplitude. A
+	// value of -6.0 (dB) will play at approximately half the amplitude of
 	// the
-	// amplitude of the normal native signal amplitude. Strongly recommend
-	// not to
-	// exceed +10 (dB) as there's usually no effective increase in loudness
-	// for
-	// any value greater than that.
+	// normal native signal amplitude. A value of +6.0 (dB) will play
+	// at
+	// approximately twice the amplitude of the normal native signal
+	// amplitude.
+	// Strongly recommend not to exceed +10 (dB) as there's usually no
+	// effective
+	// increase in loudness for any value greater than that.
 	VolumeGainDb float64 `json:"volumeGainDb,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AudioEncoding") to
@@ -391,7 +392,9 @@
 type SynthesizeSpeechResponse struct {
 	// AudioContent: The audio data bytes encoded as specified in the
 	// request, including the
-	// header (For LINEAR16 audio, we include the WAV header). Note: as
+	// header for encodings that are wrapped in containers (e.g. MP3,
+	// OGG_OPUS).
+	// For LINEAR16 audio, we include the WAV header. Note: as
 	// with all bytes fields, protobuffers use a pure binary
 	// representation,
 	// whereas JSON representations use base64.
diff --git a/texttospeech/v1beta1/texttospeech-api.json b/texttospeech/v1beta1/texttospeech-api.json
index 97c3223..e57b550 100644
--- a/texttospeech/v1beta1/texttospeech-api.json
+++ b/texttospeech/v1beta1/texttospeech-api.json
@@ -152,7 +152,7 @@
       }
     }
   },
-  "revision": "20190329",
+  "revision": "20190614",
   "rootUrl": "https://texttospeech.googleapis.com/",
   "schemas": {
     "AudioConfig": {
@@ -160,7 +160,7 @@
       "id": "AudioConfig",
       "properties": {
         "audioEncoding": {
-          "description": "Required. The format of the requested audio byte stream.",
+          "description": "Required. The format of the audio byte stream.",
           "enum": [
             "AUDIO_ENCODING_UNSPECIFIED",
             "LINEAR16",
@@ -176,29 +176,29 @@
           "type": "string"
         },
         "effectsProfileId": {
-          "description": "An identifier which selects 'audio effects' profiles that are applied on\n(post synthesized) text to speech.\nEffects are applied on top of each other in the order they are given.\nSee\n\n[audio-profiles](https:\n//cloud.google.com/text-to-speech/docs/audio-profiles)\nfor current supported profile ids.",
+          "description": "Input only. Optional. An identifier which selects 'audio effects' profiles\nthat are applied on (post synthesized) text to speech. Effects are applied\non top of each other in the order they are given. See\n\n[audio-profiles](https:\n//cloud.google.com/text-to-speech/docs/audio-profiles)\nfor current supported profile ids.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "pitch": {
-          "description": "Optional speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20\nsemitones from the original pitch. -20 means decrease 20 semitones from the\noriginal pitch.",
+          "description": "Input only. Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means\nincrease 20 semitones from the original pitch. -20 means decrease 20\nsemitones from the original pitch.",
           "format": "double",
           "type": "number"
         },
         "sampleRateHertz": {
-          "description": "The synthesis sample rate (in hertz) for this audio. Optional.  If this is\ndifferent from the voice's natural sample rate, then the synthesizer will\nhonor this request by converting to the desired sample rate (which might\nresult in worse audio quality), unless the specified sample rate is not\nsupported for the encoding chosen, in which case it will fail the request\nand return google.rpc.Code.INVALID_ARGUMENT.",
+          "description": "The synthesis sample rate (in hertz) for this audio. Optional. When this is\nspecified in SynthesizeSpeechRequest, if this is different from the voice's\nnatural sample rate, then the synthesizer will honor this request by\nconverting to the desired sample rate (which might result in worse audio\nquality), unless the specified sample rate is not supported for the\nencoding chosen, in which case it will fail the request and return\ngoogle.rpc.Code.INVALID_ARGUMENT.",
           "format": "int32",
           "type": "integer"
         },
         "speakingRate": {
-          "description": "Optional speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal\nnative speed supported by the specific voice. 2.0 is twice as fast, and\n0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any\nother values \u003c 0.25 or \u003e 4.0 will return an error.",
+          "description": "Input only. Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is\nthe normal native speed supported by the specific voice. 2.0 is twice as\nfast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0\nspeed. Any other values \u003c 0.25 or \u003e 4.0 will return an error.",
           "format": "double",
           "type": "number"
         },
         "volumeGainDb": {
-          "description": "Optional volume gain (in dB) of the normal native volume supported by the\nspecific voice, in the range [-96.0, 16.0]. If unset, or set to a value of\n0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)\nwill play at approximately half the amplitude of the normal native signal\namplitude. A value of +6.0 (dB) will play at approximately twice the\namplitude of the normal native signal amplitude. Strongly recommend not to\nexceed +10 (dB) as there's usually no effective increase in loudness for\nany value greater than that.",
+          "description": "Input only. Optional. Volume gain (in dB) of the normal native volume\nsupported by the specific voice, in the range [-96.0, 16.0]. If unset, or\nset to a value of 0.0 (dB), will play at normal native signal amplitude. A\nvalue of -6.0 (dB) will play at approximately half the amplitude of the\nnormal native signal amplitude. A value of +6.0 (dB) will play at\napproximately twice the amplitude of the normal native signal amplitude.\nStrongly recommend not to exceed +10 (dB) as there's usually no effective\nincrease in loudness for any value greater than that.",
           "format": "double",
           "type": "number"
         }
@@ -258,7 +258,7 @@
       "id": "SynthesizeSpeechResponse",
       "properties": {
         "audioContent": {
-          "description": "The audio data bytes encoded as specified in the request, including the\nheader (For LINEAR16 audio, we include the WAV header). Note: as\nwith all bytes fields, protobuffers use a pure binary representation,\nwhereas JSON representations use base64.",
+          "description": "The audio data bytes encoded as specified in the request, including the\nheader for encodings that are wrapped in containers (e.g. MP3, OGG_OPUS).\nFor LINEAR16 audio, we include the WAV header. Note: as\nwith all bytes fields, protobuffers use a pure binary representation,\nwhereas JSON representations use base64.",
           "format": "byte",
           "type": "string"
         }
diff --git a/texttospeech/v1beta1/texttospeech-gen.go b/texttospeech/v1beta1/texttospeech-gen.go
index c662614..0639efe 100644
--- a/texttospeech/v1beta1/texttospeech-gen.go
+++ b/texttospeech/v1beta1/texttospeech-gen.go
@@ -155,8 +155,7 @@
 
 // AudioConfig: Description of audio data to be synthesized.
 type AudioConfig struct {
-	// AudioEncoding: Required. The format of the requested audio byte
-	// stream.
+	// AudioEncoding: Required. The format of the audio byte stream.
 	//
 	// Possible values:
 	//   "AUDIO_ENCODING_UNSPECIFIED" - Not specified. Will return result
@@ -174,63 +173,65 @@
 	// than MP3 while using approximately the same bitrate.
 	AudioEncoding string `json:"audioEncoding,omitempty"`
 
-	// EffectsProfileId: An identifier which selects 'audio effects'
-	// profiles that are applied on
-	// (post synthesized) text to speech.
-	// Effects are applied on top of each other in the order they are
-	// given.
+	// EffectsProfileId: Input only. Optional. An identifier which selects
+	// 'audio effects' profiles
+	// that are applied on (post synthesized) text to speech. Effects are
+	// applied
+	// on top of each other in the order they are given.
 	// See
 	//
 	// [audio-profiles](https:
-	// //cloud.google.com/text-to-speech/
-	// docs/audio-profiles)
+	// //cloud.google.com/text-to-speech/docs/au
+	// dio-profiles)
 	// for current supported profile ids.
 	EffectsProfileId []string `json:"effectsProfileId,omitempty"`
 
-	// Pitch: Optional speaking pitch, in the range [-20.0, 20.0]. 20 means
-	// increase 20
-	// semitones from the original pitch. -20 means decrease 20 semitones
-	// from the
-	// original pitch.
+	// Pitch: Input only. Optional. Speaking pitch, in the range [-20.0,
+	// 20.0]. 20 means
+	// increase 20 semitones from the original pitch. -20 means decrease
+	// 20
+	// semitones from the original pitch.
 	Pitch float64 `json:"pitch,omitempty"`
 
 	// SampleRateHertz: The synthesis sample rate (in hertz) for this audio.
-	// Optional.  If this is
-	// different from the voice's natural sample rate, then the synthesizer
-	// will
-	// honor this request by converting to the desired sample rate (which
-	// might
-	// result in worse audio quality), unless the specified sample rate is
-	// not
-	// supported for the encoding chosen, in which case it will fail the
-	// request
-	// and return google.rpc.Code.INVALID_ARGUMENT.
+	// Optional. When this is
+	// specified in SynthesizeSpeechRequest, if this is different from the
+	// voice's
+	// natural sample rate, then the synthesizer will honor this request
+	// by
+	// converting to the desired sample rate (which might result in worse
+	// audio
+	// quality), unless the specified sample rate is not supported for
+	// the
+	// encoding chosen, in which case it will fail the request and
+	// return
+	// google.rpc.Code.INVALID_ARGUMENT.
 	SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
 
-	// SpeakingRate: Optional speaking rate/speed, in the range [0.25, 4.0].
-	// 1.0 is the normal
-	// native speed supported by the specific voice. 2.0 is twice as fast,
-	// and
-	// 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed.
-	// Any
-	// other values < 0.25 or > 4.0 will return an error.
+	// SpeakingRate: Input only. Optional. Speaking rate/speed, in the range
+	// [0.25, 4.0]. 1.0 is
+	// the normal native speed supported by the specific voice. 2.0 is twice
+	// as
+	// fast, and 0.5 is half as fast. If unset(0.0), defaults to the native
+	// 1.0
+	// speed. Any other values < 0.25 or > 4.0 will return an error.
 	SpeakingRate float64 `json:"speakingRate,omitempty"`
 
-	// VolumeGainDb: Optional volume gain (in dB) of the normal native
-	// volume supported by the
-	// specific voice, in the range [-96.0, 16.0]. If unset, or set to a
-	// value of
-	// 0.0 (dB), will play at normal native signal amplitude. A value of
-	// -6.0 (dB)
-	// will play at approximately half the amplitude of the normal native
-	// signal
-	// amplitude. A value of +6.0 (dB) will play at approximately twice
+	// VolumeGainDb: Input only. Optional. Volume gain (in dB) of the normal
+	// native volume
+	// supported by the specific voice, in the range [-96.0, 16.0]. If
+	// unset, or
+	// set to a value of 0.0 (dB), will play at normal native signal
+	// amplitude. A
+	// value of -6.0 (dB) will play at approximately half the amplitude of
 	// the
-	// amplitude of the normal native signal amplitude. Strongly recommend
-	// not to
-	// exceed +10 (dB) as there's usually no effective increase in loudness
-	// for
-	// any value greater than that.
+	// normal native signal amplitude. A value of +6.0 (dB) will play
+	// at
+	// approximately twice the amplitude of the normal native signal
+	// amplitude.
+	// Strongly recommend not to exceed +10 (dB) as there's usually no
+	// effective
+	// increase in loudness for any value greater than that.
 	VolumeGainDb float64 `json:"volumeGainDb,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AudioEncoding") to
@@ -391,7 +392,9 @@
 type SynthesizeSpeechResponse struct {
 	// AudioContent: The audio data bytes encoded as specified in the
 	// request, including the
-	// header (For LINEAR16 audio, we include the WAV header). Note: as
+	// header for encodings that are wrapped in containers (e.g. MP3,
+	// OGG_OPUS).
+	// For LINEAR16 audio, we include the WAV header. Note: as
 	// with all bytes fields, protobuffers use a pure binary
 	// representation,
 	// whereas JSON representations use base64.
diff --git a/toolresults/v1beta3/toolresults-api.json b/toolresults/v1beta3/toolresults-api.json
index 12ad3e1..8ee794b 100644
--- a/toolresults/v1beta3/toolresults-api.json
+++ b/toolresults/v1beta3/toolresults-api.json
@@ -15,7 +15,7 @@
   "description": "Reads and publishes results from Firebase Test Lab.",
   "discoveryVersion": "v1",
   "documentationLink": "https://firebase.google.com/docs/test-lab/",
-  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/LfQ_G3efMP-O7BZIeolFCEKsFU4\"",
+  "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/vlKNnB9Yf-iJEQaHLy-x7eKICw0\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -1271,7 +1271,7 @@
       }
     }
   },
-  "revision": "20190613",
+  "revision": "20190618",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AndroidAppInfo": {
@@ -2646,6 +2646,10 @@
       "description": "A summary of a test suite result either parsed from XML or uploaded directly by a user.\n\nNote: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.",
       "id": "TestSuiteOverview",
       "properties": {
+        "elapsedTime": {
+          "$ref": "Duration",
+          "description": "Elapsed time of test suite."
+        },
         "errorCount": {
           "description": "Number of test cases in error, typically set by the service by parsing the xml_source.\n\n- In create/response: always set - In update request: never",
           "format": "int32",
diff --git a/toolresults/v1beta3/toolresults-gen.go b/toolresults/v1beta3/toolresults-gen.go
index 8adcf41..eb982ce 100644
--- a/toolresults/v1beta3/toolresults-gen.go
+++ b/toolresults/v1beta3/toolresults-gen.go
@@ -2864,6 +2864,9 @@
 // is also being used in ExecutionService in a read only mode for the
 // corresponding step.
 type TestSuiteOverview struct {
+	// ElapsedTime: Elapsed time of test suite.
+	ElapsedTime *Duration `json:"elapsedTime,omitempty"`
+
 	// ErrorCount: Number of test cases in error, typically set by the
 	// service by parsing the xml_source.
 	//
@@ -2903,7 +2906,7 @@
 	// - In create/response: optional - In update request: never
 	XmlSource *FileReference `json:"xmlSource,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "ErrorCount") to
+	// ForceSendFields is a list of field names (e.g. "ElapsedTime") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -2911,10 +2914,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "ErrorCount") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "ElapsedTime") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
 	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
diff --git a/tpu/v1alpha1/tpu-api.json b/tpu/v1alpha1/tpu-api.json
index 3076dd1..d5cf819 100644
--- a/tpu/v1alpha1/tpu-api.json
+++ b/tpu/v1alpha1/tpu-api.json
@@ -658,7 +658,7 @@
       }
     }
   },
-  "revision": "20190509",
+  "revision": "20190619",
   "rootUrl": "https://tpu.googleapis.com/",
   "schemas": {
     "AcceleratorType": {
@@ -842,7 +842,7 @@
           "type": "string"
         },
         "createTime": {
-          "description": "Output only.\nThe time when the node was created.",
+          "description": "Output only. The time when the node was created.",
           "format": "google-datetime",
           "type": "string"
         },
@@ -871,11 +871,11 @@
           "type": "string"
         },
         "healthDescription": {
-          "description": "Output only.\nIf this field is populated, it contains a description of why the TPU Node\nis unhealthy.",
+          "description": "Output only. If this field is populated, it contains a description of why the TPU Node\nis unhealthy.",
           "type": "string"
         },
         "ipAddress": {
-          "description": "Output only.\nDEPRECATED! Use network_endpoints instead.\nThe network address for the TPU Node as visible to Compute Engine\ninstances.",
+          "description": "Output only. DEPRECATED! Use network_endpoints instead.\nThe network address for the TPU Node as visible to Compute Engine\ninstances.",
           "type": "string"
         },
         "labels": {
@@ -886,7 +886,7 @@
           "type": "object"
         },
         "name": {
-          "description": "Output only.\nThe immutable name of the TPU",
+          "description": "Output only. The immutable name of the TPU",
           "type": "string"
         },
         "network": {
@@ -901,18 +901,18 @@
           "type": "array"
         },
         "port": {
-          "description": "Output only.\nDEPRECATED! Use network_endpoints instead.\nThe network port for the TPU Node as visible to Compute Engine instances.",
+          "description": "Output only. DEPRECATED! Use network_endpoints instead.\nThe network port for the TPU Node as visible to Compute Engine instances.",
           "type": "string"
         },
         "schedulingConfig": {
           "$ref": "SchedulingConfig"
         },
         "serviceAccount": {
-          "description": "Output only.\nThe service account used to run the tensor flow services within the node.\nTo share resources, including Google Cloud Storage data, with the\nTensorflow job running in the Node, this account must have permissions to\nthat data.",
+          "description": "Output only. The service account used to run the tensor flow services within the node.\nTo share resources, including Google Cloud Storage data, with the\nTensorflow job running in the Node, this account must have permissions to\nthat data.",
           "type": "string"
         },
         "state": {
-          "description": "Output only.\nThe current state for the TPU Node.",
+          "description": "Output only. The current state for the TPU Node.",
           "enum": [
             "STATE_UNSPECIFIED",
             "CREATING",
@@ -1059,7 +1059,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/tpu/v1alpha1/tpu-gen.go b/tpu/v1alpha1/tpu-gen.go
index 138aa9d..190792e 100644
--- a/tpu/v1alpha1/tpu-gen.go
+++ b/tpu/v1alpha1/tpu-gen.go
@@ -546,8 +546,7 @@
 	// Required.
 	CidrBlock string `json:"cidrBlock,omitempty"`
 
-	// CreateTime: Output only.
-	// The time when the node was created.
+	// CreateTime: Output only. The time when the node was created.
 	CreateTime string `json:"createTime,omitempty"`
 
 	// Description: The user-supplied description of the TPU. Maximum of 512
@@ -568,14 +567,13 @@
 	// will resume running once rescheduled.
 	Health string `json:"health,omitempty"`
 
-	// HealthDescription: Output only.
-	// If this field is populated, it contains a description of why the TPU
-	// Node
+	// HealthDescription: Output only. If this field is populated, it
+	// contains a description of why the TPU Node
 	// is unhealthy.
 	HealthDescription string `json:"healthDescription,omitempty"`
 
-	// IpAddress: Output only.
-	// DEPRECATED! Use network_endpoints instead.
+	// IpAddress: Output only. DEPRECATED! Use network_endpoints
+	// instead.
 	// The network address for the TPU Node as visible to Compute
 	// Engine
 	// instances.
@@ -584,8 +582,7 @@
 	// Labels: Resource labels to represent user-provided metadata.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// Name: Output only.
-	// The immutable name of the TPU
+	// Name: Output only. The immutable name of the TPU
 	Name string `json:"name,omitempty"`
 
 	// Network: The name of a network they wish to peer the TPU node to. It
@@ -602,17 +599,15 @@
 	// to the 0th entry in this map first.
 	NetworkEndpoints []*NetworkEndpoint `json:"networkEndpoints,omitempty"`
 
-	// Port: Output only.
-	// DEPRECATED! Use network_endpoints instead.
+	// Port: Output only. DEPRECATED! Use network_endpoints instead.
 	// The network port for the TPU Node as visible to Compute Engine
 	// instances.
 	Port string `json:"port,omitempty"`
 
 	SchedulingConfig *SchedulingConfig `json:"schedulingConfig,omitempty"`
 
-	// ServiceAccount: Output only.
-	// The service account used to run the tensor flow services within the
-	// node.
+	// ServiceAccount: Output only. The service account used to run the
+	// tensor flow services within the node.
 	// To share resources, including Google Cloud Storage data, with
 	// the
 	// Tensorflow job running in the Node, this account must have
@@ -620,8 +615,7 @@
 	// that data.
 	ServiceAccount string `json:"serviceAccount,omitempty"`
 
-	// State: Output only.
-	// The current state for the TPU Node.
+	// State: Output only. The current state for the TPU Node.
 	//
 	// Possible values:
 	//   "STATE_UNSPECIFIED" - TPU node state is not known/set.
@@ -876,81 +870,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.